我的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安全退出并且处理脚本完成其工作
答案 0 :(得分:2)
root.quit()
只是绕过root.mainloop(),即如果执行quit()命令,root.mainloop()仍将在后台运行。
使用root.destroy()
这将停止root.mainloop()
本身,但它不会关闭python程序,一切都将在没有GUI的情况下运行