labandedISN
-
15 avril 2013 à 15:59
csmaison
Messages postés1Date d'inscriptiondimanche 22 mars 2015StatutMembreDernière intervention22 mars 2015
-
22 mars 2015 à 14:52
Bonjour et bonsoir.
Nous sommes un groupe de trois jeunes élèves travaillant actuellement en spécialité ISN , sur le projet de créer un "Qui est ce?". Nous utilisons la version de Python 2.7 (pour pouvoir utiliser la bibliothèque PIL). Nous avons chacun commencé Python cette année, et nous avons commencé avec les notions de class et d'héritage. Nous nous retrouvons actuellement bloqué avec une command Button qui nous agace. Si une Bonne âme charitable peut bien nous aider,ça serait très gentil.
Voici le codage, que nous avons commencé à commenter, nous vous mettons aussi le message d'erreur que nous recevons, merci énormément de votre aide. Il nous reste encore les images à mettre (associé à des boutons), ainsi que l'aléatoire à mettre en place (dans lequel nous avons rencontré quelques erreurs). Le code n'est donc à ce jour pas encore terminer (nous y travaillons).
CODE :
from Tkinter import*
fenetre=Tk()
fenetre.title('Jeu : Qui est ce ? ')
#cadre conteneur
selection1=LabelFrame(fenetre)
selection1.configure(text='Est ce que le personnage ... ',bd=2,relief='groove')
selection1.grid(row=1,column=1,padx=10,pady=10,rowspan=2)
selection2=LabelFrame(selection1)
selection2.configure(text='a les cheveux ... ',bd=2,relief='groove')
selection2.grid(row=1,column=1,padx=10,pady=10)
selection3=LabelFrame(selection1)
selection3.configure(text='a les yeux ... ',bd=2,relief='groove')
selection3.grid(row=2,column=1,padx=10,pady=10)
selection4=LabelFrame(selection1)
selection4.configure(text= 'est de sexe ...',bd=2,relief='groove')
selection4.grid(row=3,column=1,padx=10,pady=10)
selection6=LabelFrame(fenetre)
selection6.configure(text= 'Les diff??rents personnages sont ... ',bd=2,relief='groove')
selection6.grid(row=2,column=2,padx=10,pady=10)
selection7=LabelFrame(fenetre)
selection7.configure(text= 'Et la bonne r??ponse est ... ',bd=2,relief='groove')
selection7.grid(row=1,column=3,padx=10,pady=10)
# positionnement des images
image=Label(selection6)
image.configure(text='Ici on met toute les petites images !')
image.grid(row=1,column=1,padx=10,pady=10)
image2=Label(selection7)
image2.configure(text='Tadam ! voici la bonne r??ponse !')
image2.grid(row=1,column=1,padx=10,pady=10)
#coporyght en tout genre
copyright1=LabelFrame(selection8)
copyright1.configure(text='copyrights',bd=2,relief='groove')
copyright1.grid(row=3,column=1,padx=10,pady=10)
copyright2=Label(copyright1)
copyright2.configure(text='Ici on met / tout les copyrigths /')
copyright2.grid(row=1,column=1,padx=10,pady=10)
# d?but des classes. On prends une classe personne et on utilise une m?thode /
# d'h?ritage pour d?clarrer les diff?rent type de variable. aTTENTION. Avec
# l'attribut commande, il faut mettre tout les "bouton" associ? ? la def , en
# dessous et sur la m?me indentation que la d?finition, autrement ?a marche pas.
class gens():
# initial: on pose le sexe, les cheveux, les yeux...
def __init__(self,sex,hair,eyes,prenom,clef):
self.sex = sex
self.hair = hair
self.eyes = eyes
self.prenom = prenom
self.clef = clef
# class gens = class principale ne pas d?finir de sous class ou alors pourquoi le faire? on avait pas trouver le pourquoi
def identite(self):
return "[{0},{1},{2},{3},{4}]".format(self.sex,self.hair,self.eyes,self.prenom,self.clef)
def fille():
if sex==a1 :
reponse.configure(text="oui")
elif sex==a2:
reponse.configure(text="non")
def garcon():
if sex==a2 :
reponse.configure(text="oui")
elif sex==a1:
reponse.configure(text="non")
def bleu():
if eyes==c1 :
reponse.configure(text="oui")
elif eyes==c2 or eyes==c3:
reponse.configure(text="non")
def vert():
if eyes==c2 :
reponse.configure(text="oui")
elif eyes==c1 or eyes==c3:
reponse.configure(text="non")
def marron():
if eyes==c3 :
reponse.configure(text="oui")
elif eyes==b1 or eyes==b2:
reponse.configure(text="non")
def brun():
if hair==b1 :
reponse.configure(text="oui")
elif hair==b2 or hair==b3:
reponse.configure(text="non")
def roux():
if hair==b2 :
reponse.configure(text="oui")
elif hair==b1 or hair==b3:
reponse.configure(text="non")
def blond():
if hair==b3 :
reponse.configure(text="oui")
elif hair==b1 or hair==b2:
reponse.configure(text="non")
sex1=Button(selection4)
sex1.configure(text='Feminin ? ', command = fille )
sex1.grid(row=1,column=1,padx=10,pady=10)
# permet de placer des personnes dans la console selon les variables mises pr?alablement
# COMMENT ET OU LES METTRE? si vous avez des id'es!!
g1=gens(a2,b1,c3,d1,1)
g2=gens(a1,b1,c3,d2,2)
g3=gens(a1,b1,c3,d3,3)
g4=gens(a2,b2,c2,d4,4)
print "personne={0}\n".format(g4.identite())
fenetre.mainloop()
MESSAGE D'ERREUR:
Traceback (most recent call last):
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Users\marine\Downloads\JEU 2.5.py", line 117, in vert
if eyes==c2 :
NameError: global name 'eyes' is not defined
Et ça nous fait cela pour n'importe quel message, (que ce soit le sexe, les yeux, ou les cheveux)
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202277 15 avril 2013 à 18:15
Bonjour,
Il semblerait que les examens approchent car il y a pas mal de demandes de ce genre sur ce Forum.
1- Pour publier du code sur ce forum utilisez le BBcode proposé dans la barre d'outils de mise en page, sélectionnez Python et insérez votre code entre les 2 balises.
2- Telle qu'elle est décrite la fonction "def fille():" n'appartient pas à la classe "class gens():"
Pour qu'elle en fasse partie vous devez la décrire "def fille(self):" en respectant l'indentation d'appartenance à la classe
3-
def fille(self):
if sex==a1 :
La variable "sex" n'est pas reconnue, la variable "self.sex" est reconnue par toutes les méthodes de la classe quand elle est appelée à l'intérieur de la classe.
if sex==a1 : la variable "a1" n'est pas reconnue si vous ne la passez pas en paramètre de la fonction (Voir variables locales et variables globales)
Si vous désirez appelez un attribut ou une méthode à l'extérieur de la classe vous devez instancier la classe:
Instanciation
C = gens()
L'instanciation exécute "__init__"