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 :
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 "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
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 :
Merci à vous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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')![]()
Partager