Вы должны использовать, destroy()
чтобы закрыть окно tkinter.
from Tkinter import *
root = Tk()
Button(root, text="Quit", command=root.destroy).pack()
root.mainloop()
Пояснение:
root.quit()
Выше линии только Пропускаетroot.mainloop()
т.е. по- root.mainloop()
прежнему будет работать в фоновом режиме , если quit()
команда будет выполнена.
root.destroy()
Пока destroy()
команда исчезает, root.mainloop()
т.е. root.mainloop()
прекращается.
Так как вы просто хотите выйти из программы, вы должны использовать, root.destroy()
поскольку она остановит mainloop()
.
Но если вы хотите запустить какой-то бесконечный цикл, и вы не хотите разрушать окно Tk и хотите выполнить какой-то код после root.mainloop()
строки, вам следует использовать root.quit()
. Пример:
from Tkinter import *
def quit():
global root
root.quit()
root = Tk()
while True:
Button(root, text="Quit", command=quit).pack()
root.mainloop()
quit
уничтожит все виджеты; если виджеты уничтожены,mainloop
выйдет.def quit() root.quit()
или же
def quit() root.destroy()
источник
root.destroy()
как он завершает основной цикл программы. См .: 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()
источник
Обычный метод выхода из программы Python:
(которому вы также можете передать статус выхода) или
raise SystemExit
будет нормально работать в программе Tkinter.
источник
Я думаю, вы неправильно поняли функцию выхода Tkinter. Эта функция не требует вашего определения.
Во-первых, вы должны изменить свою функцию следующим образом:
from Tkinter import * root = Tk() Button(root, text="Quit", command=root.quit).pack() root.mainloop()
Затем вы должны использовать суффикс '.pyw' для сохранения этих файлов и дважды щелкнуть файл '.pyw', чтобы запустить свой графический интерфейс, на этот раз вы можете завершить графический интерфейс одним нажатием кнопки, и вы также можете найти, что не будет неприятного окна DOS. (Если вы запустите файл .py, функция выхода завершится ошибкой.)
источник
Подсветка при путанице ...
def quit(self): self.destroy() exit()
A) destroy () останавливает основной цикл и закрывает окно, но оставляет питон запущенным
Б) exit () останавливает весь процесс
Просто чтобы прояснить, если кто-то пропустил, что делает destroy (), и OP также спросил, как «завершить» программу tkinter.
источник
вам нужно только ввести это:
и вам даже не нужна функция quit (), потому что, когда вы устанавливаете ее как команду, она выйдет из всей программы.
источник
Если кто-то хочет привязать свою кнопку Escape к закрытию всего графического интерфейса:
master = Tk() master.title("Python") def close(event): sys.exit() master.bind('<Escape>',close) master.mainloop()
источник
В
idlelib.PyShell
модулеroot
переменная типаTk
определяется как глобальнаяВ конце
PyShell.main()
функции он вызываетroot.mainloop()
функцию, которая представляет собой бесконечный цикл, и он выполняется до тех пор, пока цикл не будет прерванroot.quit()
функцией. Следовательно,root.quit()
будет только прервано выполнениеmainloop
Чтобы уничтожить все виджеты, относящиеся к этому окну idlelib,
root.destroy()
необходимо вызвать, что является последней строкойidlelib.PyShell.main()
функции.источник
Вы можете использовать:
Или же
Если это не сработает, измените root на то, что когда-либо было вашей переменной в начале вашей программы.
import tkinter main = Tk() main.destroy() main.mainloop
источник
Самый простой способ - нажать красную кнопку (крайнюю левую в macOS и крайнюю правую в Windows). Если вы хотите привязать определенную функцию к виджету кнопки, вы можете сделать это:
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()
Или, чтобы немного усложнить задачу, используйте обработчики протоколов и
destroy()
метод.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()
источник
def quit1(): root.destroy() Button(root, text="Quit", command=quit1).pack() root.mainloop()
источник
import sys from Tkinter import * def quit(): sys.exit() root = Tk() Button(root, text="Quit", command=quit).pack() root.mainloop()
Должен делать то, о чем вы просите.
источник
Для строк меню:
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()
источник
Я использую следующие коды для выхода из окна Tkinter:
from tkinter import* root=Tk() root.bind("<Escape>",lambda q:root.destroy()) root.mainloop()
или же
from tkinter import* root=Tk() Button(root,text="exit",command=root.destroy).pack() root.mainloop()
или же
from tkinter import* root=Tk() Button(root,text="quit",command=quit).pack() root.mainloop()
или же
from tkinter import* root=Tk() Button(root,text="exit",command=exit).pack() root.mainloop()
источник
Фрагмент кода ниже. Предлагаю небольшой сценарий.
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()
Я создал здесь пустое окно и добавил опцию меню файла в том же окне (корневом окне), где я добавляю только один вариант выхода .
Затем просто запустите mainloop для root .
Попробуй сделать это один раз
источник
root.destroy
заработает.root.quit
тоже будет работать.В моем случае у меня было
quitButton = Button(frame, text = "Quit", command = root.destroy)
Надеюсь, поможет.
источник
Есть простой однострочный ответ:
Пишите -
exit()
в командеЭто оно!
источник
from tkinter import * def quit(root): root.close() root = Tk() root.title("Quit Window") def quit(root): root.close() button = Button(root, text="Quit", command=quit.pack() root.mainloop()
источник
)
в вашей ,button
а также ваш вызов функции неправильно.raise SystemExit
это сработало с первой попытки, где
не
источник
Попробуй это:
from Tkinter import * import sys def exitApp(): sys.exit() root = Tk() Button(root, text="Quit", command=exitApp).pack() root.mainloop()
источник
попробуй это.
возможно, вы отправляете корневой параметр во фрейм, который вы сделали. поэтому, если вы хотите закончить его, вы должны позвонить своему отцу, чтобы он мог закрыть все это, вместо того, чтобы закрывать каждого из своих детей.
источник