2013-02-14 189 views
1

我使用PyQt創建了一個實現按鈕「開始」和「停止」的GUI。 當我點擊「開始」一個巨大的Python腳本啓動。 「停止」的功能必須結束這個python腳本,但是當我啓動腳本時,它會運行,我無法阻止它。我甚至不能在GUI上激活其他任何東西,我也從中得不到任何反應。所以我必須等很長時間,直到python腳本結束。 如何實現這些方法,以便即使在我想要時也可以用「停止」按鈕中斷腳本?如何停止正在運行的python腳本

+0

向我們展示一些代碼。腳本如何運行?您可能希望使其成爲與界面分離的線程。圖形用戶界面與簡單的啓動和停止命令行腳本的工作方式不同,也許這仍是您需要習慣的方式? – Evert 2013-02-14 10:36:54

回答

0

由於您在QButton.clicked信號中執行了所有操作,因此您的GUI將鎖定,直到您退出該功能。

我在一個小型項目中使用的解決方案是將它分解爲一個GUI和工作進程。

使用multiprocessing.Process進行處理,並通過multiprocessing.Pipe發送結果。 工作人員還有第二個管道來接收命令(我的項目只使用一個命令 - 退出)

在GUI中,創建2個管道:一個用於結果,一個用於命令。 使用兩個管道初始化工作人員並啓動該過程。 下一步將是讓QTimer輪詢管道的結果並顯示它們。

通過這樣做,您的UI保持響應,而計算髮生在後臺。

相關問題