Я понимаю, что существует много examples того, как правильно закрыть графический интерфейс Tkinter, вызвав функцию root.destroy(). Они работают с моей настройкой, но я решил, что включение переменной типа tkinter.intvar заставляет процесс gui жить даже после закрытия окна. Вот рабочий пример:Tkinter intvar вызывает процесс для жизни на
import mtTkinter as Tkinter #special threadsafe version of Tkinter module, required for message windows. You can use regular Tkinter if needed
root = Tkinter.Tk()
root.wm_title("KillmePlz")
nexusvar = Tkinter.IntVar()
def ClosebyX():
root.destroy()
closebutton = Tkinter.Button(root,text='Quit',command=ClosebyX)
closebutton.pack()
root.protocol('WM_DELETE_WINDOW', ClosebyX)
root.mainloop()
На моей машине, если я удалю создание «nexusvar», в Tkinter.IntVar, когда я закрываю GUI процесс также останавливается. Если эта переменная включена, как показано выше, я вижу, что процесс задерживается после закрытия gui. Я не думаю, что mtTkinter имеет значение.
Кто-нибудь знает, почему это может произойти?
для Windows 7 64 бит, Python 2.7.12
ОБНОВЛЕНИЕ 9/20/16: mtTkinter является источником этой проблемы. Ниже приведено решение для регулярного использования модуля Tkinter. Для решения этой задачи с помощью mtTkinter увидеть следующее post
Я пробовал nexusvar = Tkinter.IntVar (master = root), и я все еще наблюдаю ту же проблему. Это то, что вы имели в виду, когда говорите, чтобы сделать корень родителем? – willpower2727
Я могу подтвердить, что проблема сохраняется в оболочке IDLE или из исполняемого файла (py2exe) – willpower2727
По-моему, мое использование модуля mtTkinter является виновником. Когда я применяю ваше решение с обычным модулем Tkinter, проблем нет. mtTkinter необходимо решить эту проблему – willpower2727