看來,如果我們開發多線程應用程序,我們不能認爲它會在其他操作系統中運行相同。爲什麼在Windows中我可以在Twisted reactor.callInThread()中運行Kivy app.run(),但不能在OSX中運行?
我正在開發一個Kivy應用程序,但這個Kivy應用程序實際上是從一個扭曲的reactor.callInThread()中啓動的。這是代碼片段:
from twisted.internet import reactor
def start_kivy():
app = SomeKivyApp()
app.run()
if __name__ == '__main__':
reactor.callInThread(start_kivy)
#it will open Kivy main application window in Windows, but not in OSX
reactor.run()
上面的代碼片段在Windows中工作得非常好。但在OSX中:Kivy主應用程序窗口未顯示。檢查日誌文件,沒有錯。沒有警告或錯誤發生。
關於如何解決這個問題的任何想法?或者,你認爲我是否以錯誤的方式構建了這個應用程序?也就是說,我應該使用Kivy應用程序循環來代替扭曲對主應用程序循環的控制嗎?
我不使用扭曲,但你可能會發現http://kivy.org/docs/guide/other-frameworks.html在kivy內運行扭曲感興趣。 – inclement 2014-09-11 10:13:17
我對你有壞消息。即使你開發一個*單線程應用程序,你也不能確定它會在每個操作系統上運行。 :) – 2014-09-11 12:15:02
@inclement是的,我其實已經讀過它。但肯定會很想知道上述代碼未按預期運行的原因 – swdev 2014-09-11 15:27:25