Tkinter. Finir mainloop() ?
Bonjour à tous,
J'étudie l'informatique théorique depuis septembre et j'ai un travail de projet à rendre pour bientôt qui me pose quelques problèmes. Je ne peux guère aller voir mes profs qui sont tous des chercheurs et qui sont assez mauvais en programmation.
J'ai décidé de programmer une interface graphique pour un jeu de Poker en python sur lequel je travaille depuis un mois.
Pour éviter de passer mes nuits à débugger j'ai choisi pour le programme une structure séquentielle très simple (il ne se passe jamais qu'une chose à la fois) mais lorsque je m'attaque à l'interface graphique tout se complique alors que fondamentalement je n'en ai pas besoin.
Voici en gros le code qui pose problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class GUI(Tk):
def __init__(self)
Tk.__init__(self)
Button(self,text='youpi',command=get_info).grid()
def get_info(self):
self.a=Toplevel(self)
self.b=Entry(self.a,text='coucou')
self.b.bind("<Return>",self.couic)
self.b.grid()
self.a.mainloop()
return self.result
def couic(self,event):
self.result=self.b.get()
self.a.destroy()
if __name__=='__main__':
test=GUI()
test.mainloop() |
(ce n'est pas le vrai code ;) )
Ce que je voulais c'est que get_info fonctionne comme input() en console : qu'elle renvoie une variable entrée par l'utilisateur et qu'elle bloque l'exécution du programme en attendant le résultat.
Le problème c'est que lorsque la fenêtre est détruite self.a.mainloop() ne finit pas et je n'arrive jamais jusqu'au return...
Comment faire dans self.couic pour mettre fin à la mainloop ?
Et globalement comment créer un Toplevel et le lancer sans bloquer l'éxecution du script courant ?
Merci d'avance
Vincent