【发布时间】:2012-08-31 09:14:20
【问题描述】:
我正在编写一个独立于平台的 Python 应用程序。目前它在 Linux 和 OSX 上运行。但是,我想集成特定于平台的代码。更准确地说,我想使用原生通知系统(Growl、Mountain Lion 的通知中心、GNOME 通知)。
到目前为止,我设法集成了 GNOME 通知。就我使用 PyObjC 发送它们而言,Mountain Lion 通知工作正常。这是我遇到的大问题:
为了让 PyObjC 正常工作,我需要调用 AppHelper.runEventLoop()。否则,我可以发送通知,但我无法对单击通知或任何其他需要 Cocoa 库回调我的脚本的内容做出反应。但由于我的应用程序应该是独立于平台的,AppHelper.runEventLoop() 不是我想要的事件循环。我应该提一下,尽管有通知,但我的应用程序不是 GUI 应用程序,实际上有它自己的事件循环。
我尝试创建一个额外的线程来运行 Cocoa 事件循环,但没有成功。
有什么想法吗?
【问题讨论】:
-
我最终在一个单独的线程中运行程序逻辑,并使用主线程运行特定于平台的事件循环。我想这是我能得到的最干净的解决方案。无论如何,我很好奇是否有任何其他方法可以让我坚持我的原始设计。
标签: python osx-mountain-lion pyobjc