probleme fonction destroy sous tkinter
Bonjour, je suis en train de faire une version graphique de 2048 et je rencontre un problème.
Lorsque je souhaite fermer le jeu je passe par un menubar dans lequel j'ai ajouté un onglet " gquit " qui appelle la fonction suivante :
Code:
1 2 3 4 5 6 7
| def game_quit():
global name
if askyesno("Quit game ?","Are you sure? :("):
if askyesno("Save ?","Do you want to save your game? "):
ask_name()
save_scoreG(grid,lenght)
fenetre.destroy() |
Lorsque je répond " yes " "yes" aux deux askyesno, une nouvelle fenêtre s'ouvre dans laquelle j'entre mon nom, je clique sur un bouton qui associe le nom entré à ma variable name. Et la fenêtre du widget Entry se ferme grâce au master.destroy() . Cependant, le fenetre.destroy() ne fonctionne pas dans ce cas-ci. Je dois le quitter à la main pour obtenir le message " _tkinter.TclError: can't invoke "destroy" command: application has been destroyed "
Il semblerait que tkinter ait du mal à gérer deux fenêtres Tk() à la fois, c'est pourquoi j'ai mis la fenêtre du widget Entry en Toplevel(), cependant rien y change.
Voici les fonctions appelées :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| def ask_name():
global entry, master
master = Toplevel()
master.title("Your Name")
button=Button(master, text='Input your name and click here', command = get_name, bg= "yellow" )
usertext= StringVar()
entry = Entry(master, textvariable=usertext)
entry.pack()
button.pack()
master.mainloop()
def get_name():
global name, entry, master
name = str(entry.get())
master.destroy()
def save_scoreG(grid,lenght):
global name
""" Permet la sauvegarde du score dans un fichier nommé score """
with open('score','a') as s:
s.write(str(lenght)+':' + name +':'+ str(score(grid,lenght))+'\n') |
Merci à vous ;)