Je souhaite fermer deux fenêtres en même temps lorsque l'utilisateur clique sur le bouton Démarrer, la nouvelle fenêtre apparaîtra et lorsque l'utilisateur clique sur le bouton Quitter de la deuxième fenêtre contextuelle, la fenêtre devrait se fermer à la fois
Je sais que pour une fenêtre différente, je dois créer une fonction distincte pour quitter les fenêtres Mais je veux fermer plus d'une fenêtre en un seul clic.
J'utilise python 3.7!
import tkinter def NewWindow(): def qExit(): root.destroy() root = tkinter.Tk() root.title("New Window") newButton = tkinter.Button(root, text=" Click here to Exit:", command=qExit) newButton.pack() root.geometry("300x200") root.mainloop() Window = tkinter.Tk() Window.title("hello") eButton = tkinter.Button(Window, text="Start", command=NewWindow) eButton.pack() Window.geometry("200x200") Window.mainloop()
3 Réponses :
Une solution simple serait de simplement faire exit () pour arrêter le programme, ce qui fermera toutes les fenêtres. vous pouvez également faire une liste de tous les objets de fenêtre ouverts et appeler destroy sur chacun d'eux.
Pas besoin de description
def qExit(): root.destroy() Window.destroy()
Vous ne devez pas appeler Vous n'avez généralement pas besoin d'appeler Pour fermer à la fois la nouvelle fenêtre et la fenêtre principale, vous pouvez passer cette dernière à la première lorsque vous la créez, puis Remarque J'ai changé certains des noms de fonction et de variable pour me conformer davantage à la PEP 8 - Guide de style pour le code Python . tkinter.Tk ()
plus d'une fois dans une application tkinter
. Appelez Toplevel ()
a > si vous souhaitez créer une nouvelle fenêtre. mainloop ()
plus d'une fois. destroy ()
que dans votre fonction qExit ()
(ainsi que la nouvelle fenêtre lui-même). import tkinter
def makeWindow(parent):
def qExit():
newWindow.destroy()
parent.destroy()
newWindow = tkinter.Toplevel()
newWindow.geometry("300x200")
newWindow.title("New Window")
newButton = tkinter.Button(newWindow, text=" Click here to Exit",
command=qExit)
newButton.pack()
root = tkinter.Tk()
root.title("hello")
eButton = tkinter.Button(root, text="Start", command=lambda: makeWindow(root))
eButton.pack()
root.geometry("200x200")
root.mainloop()
salut! Je vous recommande de corriger l'indentation dans votre exemple de code. Dans l'état actuel des choses, on ne sait pas où vos fonctions commencent et se terminent.
Peux-tu m'aider avec ceci ??
@Valentino: L'indentation me convient.
avez-vous essayé
Window.destroy ()
dansqExit ()
?L'indentation @martineau est bien maintenant. Le PO l'a édité.