Sie sollten verwenden destroy()
, um ein tkinter-Fenster zu schließen.
from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.destroy).pack()
root.mainloop()
Erläuterung:
root.quit()
Die obige Zeile umgeht nur das, root.mainloop()
dh root.mainloop()
wird weiterhin im Hintergrund ausgeführt, wenn der quit()
Befehl ausgeführt wird.
root.destroy()
Während destroy()
Befehl verschwinden, root.mainloop()
dh root.mainloop()
stoppt.
Wenn Sie also nur das Programm beenden möchten, sollten root.destroy()
Sie es so verwenden, wie es wird mainloop()
.
Aber wenn Sie eine Endlosschleife ausführen möchten und Ihr Tk-Fenster nicht zerstören möchten und Code nach root.mainloop()
Zeile ausführen möchten, sollten Sie verwenden root.quit()
. Ex:
from Tkinter import *
def quit():
global root
root.quit()
root = Tk()
while True:
Button(root, text="Quit", command=quit).pack()
root.mainloop()
quit
werden alle Widgets zerstört. Wenn die Widgets zerstört werden,mainloop
wird beendet.def quit() root.quit()
oder
def quit() root.destroy()
quelle
root.destroy()
da es die Hauptprogrammschleife beendet. Siehe: http://www.daniweb.com/software-development/python/threads/66698import Tkinter as tk def quit(root): root.destroy() root = tk.Tk() tk.Button(root, text="Quit", command=lambda root=root:quit(root)).pack() root.mainloop()
quelle
Die übliche Methode zum Beenden eines Python-Programms:
(an die Sie auch einen Exit-Status übergeben können) oder
raise SystemExit
funktioniert gut in einem Tkinter-Programm.
quelle
Ich denke, Sie haben die Beendigungsfunktion von Tkinter falsch verstanden. Für diese Funktion müssen Sie keine Definition vornehmen.
Zunächst sollten Sie Ihre Funktion wie folgt ändern:
from Tkinter import * root = Tk() Button(root, text="Quit", command=root.quit).pack() root.mainloop()
Dann sollten Sie das Suffix '.pyw' verwenden, um diese Dateien zu speichern, und auf die Datei '.pyw' doppelklicken, um Ihre GUI auszuführen. Dieses Mal können Sie die GUI mit einem Klick auf die Schaltfläche beenden, und Sie können das auch finden Es wird kein unangenehmes DOS-Fenster geben. (Wenn Sie die '.py'-Datei ausführen, schlägt die Beendigungsfunktion fehl.)
quelle
Beleuchtung bei Verwirrung ...
def quit(self): self.destroy() exit()
A) destroy () stoppt den Mainloop und tötet das Fenster, lässt aber Python laufen
B) exit () stoppt den gesamten Prozess
Nur um zu klären, falls jemand verpasst hat, was destroy () tut, und das OP fragte auch, wie ein tkinter-Programm "beendet" werden soll.
quelle
Sie müssen nur Folgendes eingeben:
und Sie brauchen nicht einmal die Funktion quit (), wenn Sie dies als Befehl festlegen, wird das gesamte Programm beendet.
quelle
Falls jemand seine Escape-Schaltfläche an das Schließen der gesamten GUI binden möchte:
master = Tk() master.title("Python") def close(event): sys.exit() master.bind('<Escape>',close) master.mainloop()
quelle
Im
idlelib.PyShell
Modul wird eineroot
Variable vom TypTk
als global definiertAm Ende der
PyShell.main()
Funktion ruft es dieroot.mainloop()
Funktion auf, die eine Endlosschleife ist, und läuft, bis die Schleife durch dieroot.quit()
Funktion unterbrochen wird . Daherroot.quit()
wird nur die Ausführung von unterbrochenmainloop
Um alle Widgets zu zerstören, die zu diesem Idlelib-Fenster gehören,
root.destroy()
muss aufgerufen werden, was die letzteidlelib.PyShell.main()
Funktionszeile ist.quelle
Sie können verwenden:
Oder
Wenn dies nicht funktioniert, ändern Sie root in die Variable, die sich zu Beginn Ihres Programms befand
import tkinter main = Tk() main.destroy() main.mainloop
quelle
Am einfachsten ist es, auf die rote Schaltfläche zu klicken (unter macOS ganz links und unter Windows ganz rechts). Wenn Sie eine bestimmte Funktion an ein Schaltflächen-Widget binden möchten, haben Sie folgende Möglichkeiten:
class App: def __init__(self, master) frame = Tkinter.Frame(master) frame.pack() self.quit_button = Tkinter.Button(frame, text = 'Quit', command = frame.quit) self.quit_button.pack()
Um die Dinge etwas komplexer zu gestalten, verwenden Sie die Protokollhandler und die
destroy()
Methode.import tkMessageBox def confirmExit(): if tkMessageBox.askokcancel('Quit', 'Are you sure you want to exit?'): root.destroy() root = Tk() root.protocol('WM_DELETE_WINDOW', confirmExit) root.mainloop()
quelle
def quit1(): root.destroy() Button(root, text="Quit", command=quit1).pack() root.mainloop()
quelle
import sys from Tkinter import * def quit(): sys.exit() root = Tk() Button(root, text="Quit", command=quit).pack() root.mainloop()
Sollte tun, was Sie fragen.
quelle
Für Menüleisten:
def quit(): root.destroy() menubar = Menu(root) filemenu = Menu(menubar, tearoff=0) filemenu.add_separator() filemenu.add_command(label="Exit", command=quit) menubar.add_cascade(label="menubarname", menu=filemenu) root.config(menu=menubar) root.mainloop()
quelle
Ich benutze die folgenden Codes für den Ausgang des Tkinter-Fensters:
from tkinter import* root=Tk() root.bind("<Escape>",lambda q:root.destroy()) root.mainloop()
oder
from tkinter import* root=Tk() Button(root,text="exit",command=root.destroy).pack() root.mainloop()
oder
from tkinter import* root=Tk() Button(root,text="quit",command=quit).pack() root.mainloop()
oder
from tkinter import* root=Tk() Button(root,text="exit",command=exit).pack() root.mainloop()
quelle
Code-Snippet unten. Ich biete ein kleines Szenario.
import tkinter as tk from tkinter import * root = Tk() def exit(): if askokcancel("Quit", "Do you really want to quit?"): root.destroy() menubar = Menu(root, background='#000099', foreground='white', activebackground='#004c99', activeforeground='white') fileMenu = Menu(menubar, tearoff=0, background="grey", foreground='black', activebackground='#004c99', activeforeground='white') menubar.add_cascade(label='File', menu=fileMenu) fileMenu.add_command(label='Exit', command=exit) root.config(bg='#2A2C2B',menu=menubar) if __name__ == '__main__': root.mainloop()
Ich habe ein leeres Fenster hier erstellt und Datei - Menü - Option auf dem gleichen Fenster (root Fenster) hinzufügen, wo ich nur eine Option hinzufügen Ausfahrt .
Führen Sie dann einfach mainloop für root aus .
Versuchen Sie es einmal
quelle
root.destroy
wird funktionieren.root.quit
wird auch funktionieren.In meinem Fall hatte ich
quitButton = Button(frame, text = "Quit", command = root.destroy)
Ich hoffe es hilft.
quelle
Es gibt eine einfache einzeilige Antwort:
Schreiben Sie -
exit()
in den BefehlDas ist es!
quelle
raise SystemExit
Dies funktionierte beim ersten Versuch, wo
nicht
quelle
Versuche dies:
from Tkinter import * import sys def exitApp(): sys.exit() root = Tk() Button(root, text="Quit", command=exitApp).pack() root.mainloop()
quelle
Versuche dies.
Vielleicht senden Sie einen root-ähnlichen Parameter an einen Frame, den Sie erstellt haben. Wenn du es beenden willst, musst du deinen Vater anrufen, damit er alles schließen kann, anstatt jedes seiner Kinder zu schließen.
quelle