2010-01-13 11 views
1

好的,我有一個用cherrypy編寫的應用程序,我想爲它構建一個wxpython gui。問題在於兩個模塊都使用閉環進行事件處理,這(我假設)意味着一個正在運行的另一個將被鎖定。合併兩個事件循環(Cherrypy和Wxpython)

我問了一些建議,並建議我合併這兩個事件循環,而不是使用股票入口點(quickloop()對WX的CherryPy和MainLoop語句())

的問題是我不知道這個怎麼做。任何建議將不勝感激。

回答

0

在cherrypy的情況下,你有源代碼。查看代碼quickloop()的作用,然後嘗試將此代碼與WX的MainLoop()合併。

兩個循環可能會是這樣的:

while (true) { 
    if (pendingEvents()) processEvents(); 
    else waitForEvents(); 
} 

你必須找到一種方法,兩個等待呼叫合併成一個(所以代碼繼續如果任一事件源已經掛起的事件)。對於WX,請看Dispatch(),Pending()ProcessIdle()

或者您可以查看wxIdleEvent(請參閱the docs)並處理其中的所有cherrypy事件。

另一種解決方案可能是在不同線程中運行兩個循環。在這種情況下,您不能從cherrypy代碼調用WX方法,反之亦然。爲了解決這個問題,你必須找到一種方法來將消息發送到其他線程,並提供所有調用該方法的信息。這可以確保WX方法在WX線程中執行,而cherrypy方法在cherrypy線程中執行。

6

你已經在這裏問過同樣的問題:cherrypy and wxpython,我給你最好的答案,你會發現任何地方,這是投票了,你批准,顯然。你爲什麼再問一次?