0

我剛開始一份新工作。現有的代碼是部分實現的wxpython GUI。 jist是有兩個獨立的GUI:一個是「帶有測試中止按鈕的狀態監視器」,另一個是測試執行程序,運行測試可能需要幾分鐘時間。2個「並行」的wxpython GUI可能嗎?

任何時候都應該能夠按下狀態監視器GUI中止按鈕來停止在執行GUI中運行的長時間運行的測試腳本進程。

長腳本進程在新線程中啓動並正在從測試執行GUI工作,但無論我做什麼,狀態監視器GUI都會凍結。

我已經在pyside中做過類似的事情,它看起來沒有wxpython那麼多。

我不認爲這是一個線程問題。看起來像它的一個wxpython問題。

是否有可能從同一個腳本啓動2個獨立的wxpython GUI?我似乎已經閱讀過我只需要一個主循環的地方。

2個並行獨立GUI的任何提示/例子都會很棒!

+0

沒有什麼能阻止你從同一個wxPython應用程序啓動多個獨立的窗口。但是,它們都將共享相同的事件循環。無論如何,你不應該讓主線程(事件循環)忙碌(這不是一個缺點)。否則gui會掛起。看一個簡單的例子[這個問題](http://stackoverflow.com/questions/8263513/show-another-window-wxpython)。 –

回答

0

是的,沒有。

據我所知,不可能運行2個GUI只是由線程分開。

我們有一個相當類似的問題。由於我們主要使用Windows,因此我們需要解決Python GIL,以使GUI能夠停止執行測試的子進程。爲了做到這一點,我們轉移到了多處理庫,並且我們使用了一個執行測試的Processpool(我們同時運行多個項目 - 您可以只用一個進程來達到您的目的)。在新的過程中,您還可以執行第二個GUI,這是完全獨立的(我們也是這樣做的)。當使用另一個進程時,它會得到一個PID,可以與os.kill一起使用。主要的GUI將在整個過程中保持穩定。

爲了與新進程進行通信,我們使用Pyro4,但您也可以使用隊列方法來完成通信。如果您像使用線程方法一樣使用Windows,則無法直接訪問另一個進程中的數據。

希望這會有所幫助。

問候, 邁克爾