【发布时间】:2014-09-11 10:06:00
【问题描述】:
似乎如果我们开发一个多线程应用程序,我们不能想当然地认为它会在其他操作系统中运行。
我正在开发一个 Kivy 应用程序,但这个 Kivy 应用程序实际上是从一个扭曲的 reactor.callInThread() 中启动的。这是代码的sn-p:
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()
上面的 sn-p 在 Windows 中运行得非常好。但在 OSX 中:未显示 Kivy 主应用程序窗口。检查日志文件,没有错。未出现警告或错误。
关于如何解决这个问题的任何想法?或者,您是否认为我以错误的方式构建了这个应用程序?也就是说,我应该使用 Kivy 应用程序循环,而不是让twisted 控制主应用程序循环吗?
【问题讨论】:
-
我不使用twisted,但您可能会发现kivy.org/docs/guide/other-frameworks.html 在kivy 中使用twisted 很有趣。
-
我有个坏消息要告诉你。即使您开发了一个单线程应用程序,您也不能确定它在每个操作系统上的运行都是一样的! :)
-
@inclement 是的,我实际上已经阅读了它。但肯定很想知道上述代码没有按预期运行的原因
-
@Jean-PaulCalderone :D 不得不说,这可能是我假设中最容易注意到的错误!