0
我正在寫一個Tkinter應用程序,它執行一些長時間的運行操作。爲了防止Tkinter窗口掛起,我正在引入線程: - 一個線程用於執行長時間運行的操作,第二個線程將用於基於將通過長時間運行操作填充的QUEUE更新GUI。現在我正考慮在單獨的線程而不是主線程中運行Tkinter主循環,原因是我想更新GUI(配置某些按鈕)的狀態,只有在長時間運行的線程完成後。如果我在主線程中運行Tkinter主循環,它不會等待長時間運行的線程完成,並會在它之前更新GUI。那麼,如果我在單獨的線程中運行Tkinter主循環並且在主循環中等待長時間運行的線程在其他更新之前完成,那麼安全嗎?這個問題的任何其他想法?在線程或主應用程序中的Python Tkinter?
我太贊成了,但在我的問題聲明中,如果它在主線程中運行。我怎樣才能控制GUI的某些更新,只有在「長時間運行的線程」完成後才需要完成。我正在考慮在第二個線程中檢查此線程的狀態(「當數據可用時負責更新GUI的線程」),一旦它沒有活動,然後更新操作完成的GUI的狀態。這種方法是好的還是以某種方式我可以在主線程中分配這個責任? – sarbjit
您的工作線程將數據推送到線程安全隊列或信號量,並且您的主GUI線程需要定期輪詢該隊列或信號。 –