Вы должны использовать 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()
#do something
Если Используется root.quit(), как можно снова найти окно позже в другом скрипте, который будет уничтожен (чтобы не продолжать использовать системные ресурсы)? – Raj 2016-06-29 00:14:07