[Python] A l'aide application Python/Tkinter
python_newbie
-
21 août 2003 à 19:50
python_newbie -
python_newbie -
Bonjour a toutes et tous,
je souhaiterais finaliser mon application mais je suis bloqué sur une instruction.
l'application en question est une tache ou l'on doit cliquer sur des boutons (sur lesquels j'ai lié une image aléatoirement), si le bouton est identique a au moins une des 3 images modèles.
pour faire bref, j'arrive a générer ma série de 3 lignes de 12 boutons mais je n'arrive pas a générer 3 nouvelles lignes.
pour résumer, il faudrait qu'une fois que le dernier bouton est analysé et que la souris le quitte, cela génère 3 nouvelle lignes, et ce pendant 3 min.
je vous donne mon code pour une meilleure comprehension:
__________________________________________________________
from Tkinter import *
import random
class ImButton(Button):
def __init__(self, master, liste, modeles, **args):
self.f = random.choice(liste)
self.p = PhotoImage(file=self.f)
self.modeles = modeles
Button.__init__(self, master, args, image=self.p, state=DISABLED,
command=self.verif)
self.bind("<Enter>", self.entre)
self.bind("<Leave>", self.quitte)
def verif(self):
global bonsChoix, mauvaisChoix
if self.f in self.modeles:
bonsChoix += 1
else:
mauvaisChoix += 1
def connect(self, bouton):
self.connect_bouton = bouton
def entre(self, e):
if self["state"] == NORMAL:
self["bg"] = "red"
def quitte(self, e):
if self["state"] == NORMAL:
if self.connect_bouton:
self.connect_bouton["state"] = NORMAL
self["state"]=DISABLED
bonsChoix = 0
mauvaisChoix = 0
fen1 = Tk()
frame1= Frame(fen1)
frame2= Frame(fen1)
frame1.grid(row=0, column=0)
frame2.grid(row=1, column=0)
#déclaration de la liste
noms_fichiers = ['cpython23/images/im1.gif',
'cpython23/images/im2.gif',
'cpython23/images/im3.gif',
'cpython23/images/im4.gif',
'cpython23/images/im5.gif',
'cpython23/images/im6.gif',
'cpython23/images/im7.gif',
'cpython23/images/im8.gif']
#tirage aléatoire
temp= noms_fichiers
file_ref1= random.choice(temp)
temp.remove(file_ref1)
file_ref2= random.choice(temp)
temp.remove(file_ref2)
file_ref3= random.choice(temp)
#affichage des images de ref 1, 2 et 3
fig_ref1 = PhotoImage (file=file_ref1)
fig_ref2 = PhotoImage (file=file_ref2)
fig_ref3 = PhotoImage (file=file_ref3)
label1= Label(frame1, image=fig_ref1, borderwidth=5, relief=RAISED)
label2= Label(frame1, image=fig_ref2, borderwidth=5, relief=RAISED)
label3= Label(frame1, image=fig_ref3, borderwidth=5, relief=RAISED)
label1.grid(row=0, column=0, padx=15, pady=150)
label2.grid(row=0, column=1, padx=15, pady=150)
label3.grid(row=0, column=2, padx=15, pady=150)
#Création des Boutons
r=2
while r >= 0:
c=11
while c>=0:
b = ImButton(frame2, noms_fichiers, (file_ref1, file_ref2, file_ref3))
b.grid(row=r, column=c, padx= 5, pady= 5, ipadx=10, ipady= 10, sticky=W+E+N+S)
if c!=11 or r!=2 :
b.connect(b_preced)
b_preced = b
c=c-1
r= r-1
b_preced["state"]=NORMAL
fen1.mainloop()
print "%s bons - %s mauvais" % (bonsChoix, mauvaisChoix)
____________________________________________________________
Merci par avance
cyril Lombardo
je souhaiterais finaliser mon application mais je suis bloqué sur une instruction.
l'application en question est une tache ou l'on doit cliquer sur des boutons (sur lesquels j'ai lié une image aléatoirement), si le bouton est identique a au moins une des 3 images modèles.
pour faire bref, j'arrive a générer ma série de 3 lignes de 12 boutons mais je n'arrive pas a générer 3 nouvelles lignes.
pour résumer, il faudrait qu'une fois que le dernier bouton est analysé et que la souris le quitte, cela génère 3 nouvelle lignes, et ce pendant 3 min.
je vous donne mon code pour une meilleure comprehension:
__________________________________________________________
from Tkinter import *
import random
class ImButton(Button):
def __init__(self, master, liste, modeles, **args):
self.f = random.choice(liste)
self.p = PhotoImage(file=self.f)
self.modeles = modeles
Button.__init__(self, master, args, image=self.p, state=DISABLED,
command=self.verif)
self.bind("<Enter>", self.entre)
self.bind("<Leave>", self.quitte)
def verif(self):
global bonsChoix, mauvaisChoix
if self.f in self.modeles:
bonsChoix += 1
else:
mauvaisChoix += 1
def connect(self, bouton):
self.connect_bouton = bouton
def entre(self, e):
if self["state"] == NORMAL:
self["bg"] = "red"
def quitte(self, e):
if self["state"] == NORMAL:
if self.connect_bouton:
self.connect_bouton["state"] = NORMAL
self["state"]=DISABLED
bonsChoix = 0
mauvaisChoix = 0
fen1 = Tk()
frame1= Frame(fen1)
frame2= Frame(fen1)
frame1.grid(row=0, column=0)
frame2.grid(row=1, column=0)
#déclaration de la liste
noms_fichiers = ['cpython23/images/im1.gif',
'cpython23/images/im2.gif',
'cpython23/images/im3.gif',
'cpython23/images/im4.gif',
'cpython23/images/im5.gif',
'cpython23/images/im6.gif',
'cpython23/images/im7.gif',
'cpython23/images/im8.gif']
#tirage aléatoire
temp= noms_fichiers
file_ref1= random.choice(temp)
temp.remove(file_ref1)
file_ref2= random.choice(temp)
temp.remove(file_ref2)
file_ref3= random.choice(temp)
#affichage des images de ref 1, 2 et 3
fig_ref1 = PhotoImage (file=file_ref1)
fig_ref2 = PhotoImage (file=file_ref2)
fig_ref3 = PhotoImage (file=file_ref3)
label1= Label(frame1, image=fig_ref1, borderwidth=5, relief=RAISED)
label2= Label(frame1, image=fig_ref2, borderwidth=5, relief=RAISED)
label3= Label(frame1, image=fig_ref3, borderwidth=5, relief=RAISED)
label1.grid(row=0, column=0, padx=15, pady=150)
label2.grid(row=0, column=1, padx=15, pady=150)
label3.grid(row=0, column=2, padx=15, pady=150)
#Création des Boutons
r=2
while r >= 0:
c=11
while c>=0:
b = ImButton(frame2, noms_fichiers, (file_ref1, file_ref2, file_ref3))
b.grid(row=r, column=c, padx= 5, pady= 5, ipadx=10, ipady= 10, sticky=W+E+N+S)
if c!=11 or r!=2 :
b.connect(b_preced)
b_preced = b
c=c-1
r= r-1
b_preced["state"]=NORMAL
fen1.mainloop()
print "%s bons - %s mauvais" % (bonsChoix, mauvaisChoix)
____________________________________________________________
Merci par avance
cyril Lombardo
A voir également:
- [Python] A l'aide application Python/Tkinter
- Citizen code python - Accueil - Outils
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Desinstaller application windows - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Application pour apprendre à coder - Guide