1

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

它工作正常,但唯一的问题是,虽然我的 GUI 传递数据然后处理脚本开始工作,但 GUI 开始没有响应并在下载完成之前冻结并造成严重破坏(这可能需要几个小时)

我通过导入GUI脚本在处理脚本中创建了一个Interface类的对象

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

这是我的 GUI 脚本的 destruct 方法定义在一个类中,该方法在处理脚本接收到数据后自动执行:但是,当用户单击“确定”时,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 安全退出并且处理脚本正常工作

4

1 回答 1

3

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

采用root.destroy()

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

于 2013-08-25T10:45:24.530 回答