好的,我有一個用cherrypy編寫的應用程序,我想爲它構建一個wxpython gui。問題在於兩個模塊都使用閉環進行事件處理,這(我假設)意味着一個正在運行的另一個將被鎖定。合併兩個事件循環(Cherrypy和Wxpython)
我問了一些建議,並建議我合併這兩個事件循環,而不是使用股票入口點(quickloop()對WX的CherryPy和MainLoop語句())
的問題是我不知道這個怎麼做。任何建議將不勝感激。
好的,我有一個用cherrypy編寫的應用程序,我想爲它構建一個wxpython gui。問題在於兩個模塊都使用閉環進行事件處理,這(我假設)意味着一個正在運行的另一個將被鎖定。合併兩個事件循環(Cherrypy和Wxpython)
我問了一些建議,並建議我合併這兩個事件循環,而不是使用股票入口點(quickloop()對WX的CherryPy和MainLoop語句())
的問題是我不知道這個怎麼做。任何建議將不勝感激。
在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線程中執行。
你已經在這裏問過同樣的問題:cherrypy and wxpython,我給你最好的答案,你會發現任何地方,這是投票了,你批准,顯然。你爲什麼再問一次?