2013-08-25 216 views
0

我的Python程序由两部分组成,一部分通过Tkinter获取用户凭据并将其传递给另一个脚本,然后处理它们。如何强制退出Tkinter程序

它工作正常,但唯一的问题是,虽然我的GUI传递数据,然后处理脚本启动它的工作,GUI开始不响应,并导致破坏,直到下载完成(可能需要几小时)

我通过导入GUI脚本

root = Tk.Tk() 
root.title('Coursera-dl') 
root.geometry("345x100") 
app = GUI.Interface(root) 
app.mainloop() 

这在数据已被在此之后被自动执行一类定义我的GUI脚本的自毁方法创建在处理脚本的接口类的对象由处理s接收CRIPT:然而,当用户点击“OK”的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安全退出,并且处理脚本执行其工作

回答

2

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

使用root.destroy()

这将停止root.mainloop()本身,但它不会关闭Python程序,一切都将仍然没有GUI刚跑

+2

感谢你的答案是正确的有点它不是'root.destroy()'这是做了魔法,但'self.parent.destroy()'实际上破坏**根**,谢谢你的回答帮助我弄明白了,顺便说一句很好的解释+1 –

相关问题