【问题标题】:Write a platform independent Python application with PyObjC使用 PyObjC 编写一个独立于平台的 Python 应用程序
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多