2013-08-25 247 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 –

相關問題