0

我正在编写一个独立于平台的 Python 应用程序。目前它在 Linux 和 OSX 上运行。但是,我想集成特定于平台的代码。更准确地说,我想使用原生通知系统(Growl、Mountain Lion 的通知中心、GNOME 通知)。

到目前为止,我设法集成了 GNOME 通知。就我使用 PyObjC 发送它们而言,Mountain Lion 通知工作正常。这是我遇到的一个大问题:

为了让 PyObjC 正常工作,我需要调用AppHelper.runEventLoop(). 否则,我可以发送通知,但我无法对单击通知或任何其他需要 Cocoa 库回调我的脚本的内容做出反应。但是由于我的应用程序应该是平台独立AppHelper.runEventLoop()的,这不是我想要的事件循环。我应该提到,尽管有通知,但我的应用程序不是 GUI 应用程序,实际上有它自己的事件循环。

我试图创建一个额外的线程来运行 Cocoa 事件循环,但没有成功。

有任何想法吗?

4

1 回答 1

0

您应该查看使用 PyQt(使用 QApplication)处理此问题的方式:http ://en.wikibooks.org/wiki/Python_Programming/PyQt4 。Qt 是一个可靠的跨平台框架,我通常建议将其用于此类开发。

如果您不适合使用 Qt,您可以从 NSRunLoop 以及您将用于 Windows 和 Linux 的任何内容创建自己的主循环抽象。

于 2013-06-04T18:33:49.400 回答