如何努力退出Tkinter程序

时间:2013-08-25 10:34:47

标签: python python-2.7 tkinter

我的Python程序由两部分组成,一部分通过Tkinter获取用户凭据,然后将其传递给另一部分,然后处理它们。

它工作正常但唯一的问题是虽然我的GUI传递数据然后处理脚本开始工作,GUI开始没有响应并导致破坏,因为它冻结直到下载完成(这可能会采取小时)

我通过导入GUI脚本

在处理脚本中创建Interface类的对象
root = Tk.Tk()
root.title('Coursera-dl')
root.geometry("345x100")
app = GUI.Interface(root)
app.mainloop()

这是我在类中定义的GUI脚本的析构方法,它在处理脚本收到数据后自动执行:但是当用户点击'确定'时,GUI会冻结并且不会退出并且如果我强制退出它,处理脚本也会在python.exe终止时结束

*code*
....................................
def destruct(self):
    if tkMessageBox.askokcancel(title=None,message='Download would start upon closing the Interface, If any changes are to be made to the credentials Please do so by selecting Cancel'):
        self.quit()

如何制作我的程序,以便当用户点击“确定”时,GUI安全退出并且处理脚本完成其工作

1 个答案:

答案 0 :(得分:2)

root.quit()只是绕过root.mainloop(),即如果执行quit()命令,root.mainloop()仍将在后台运行。

使用root.destroy()

这将停止root.mainloop()本身,但它不会关闭python程序,一切都将在没有GUI的情况下运行