【发布时间】:2015-01-05 01:52:24
【问题描述】:
为了在我的 Pyinstaller 打包的 Kivy Python 应用程序中实现原生感,我想在 OSX 菜单栏中创建菜单项。如果使用 PyQt,我可以轻松实现这一点。但是由于我使用的是 Kivy,我似乎不得不求助于其他方式。
有什么建议吗?我猜它会在 PyObjc 或 AppleScript 的范围内。不过不确定。
【问题讨论】:
标签: python macos kivy pyinstaller
为了在我的 Pyinstaller 打包的 Kivy Python 应用程序中实现原生感,我想在 OSX 菜单栏中创建菜单项。如果使用 PyQt,我可以轻松实现这一点。但是由于我使用的是 Kivy,我似乎不得不求助于其他方式。
有什么建议吗?我猜它会在 PyObjc 或 AppleScript 的范围内。不过不确定。
【问题讨论】:
标签: python macos kivy pyinstaller
我想这更像是 Pyinstaller 的问题,它是 Kivy 的问题。
两者都不是:)
PyInstaller 只是将 python 应用程序包装到一个看起来像本机的 OS X 应用程序包中。
由于 Kivy 无法在 OS X 中创建菜单栏图标,因此您必须坚持使用 PyObjC。
首先,您必须安装 Xcode(如果尚未安装)。您可以从 App Store 或Apple's Developer Center 下载。
然后安装 PyObjC 本身:
pip install pyobjc
已经有一些使用 PyObjC 创建状态栏图标的示例(first、another)。
还有一个很棒的库rumps,它极大地简化了制作状态栏图标、菜单和操作所需的代码。也许它可以帮助您进行状态栏交互。
【讨论】:
如果使用 PyQt,我可以轻松实现这一点。但是当我使用 Kivy 时,它 看来我不得不求助于其他方式了
我不明白为什么你不能只使用 PyQt 方法。创建一个单独的文件来运行您的主 Kivy 应用程序调用的图标。
与 PyQt 一样,我确信 Kivy 有一个退出函数,您可以覆盖它并让它在退出应用程序时终止图标线程。
唯一潜在的缺点(我能想到的)是它的运行速度可能比在 PyObjC 中实现要慢。
【讨论】: