【问题标题】:How to create menu item in OSX Menubar using Pyinstaller packaged Kivy Python application?如何使用 Pyinstaller 打包的 Kivy Python 应用程序在 OSX 菜单栏中创建菜单项?
【发布时间】:2015-01-05 01:52:24
【问题描述】:

为了在我的 Pyinstaller 打包的 Kivy Python 应用程序中实现原生感,我想在 OSX 菜单栏中创建菜单项。如果使用 PyQt,我可以轻松实现这一点。但是由于我使用的是 Kivy,我似乎不得不求助于其他方式。

有什么建议吗?我猜它会在 PyObjc 或 AppleScript 的范围内。不过不确定。

【问题讨论】:

    标签: python macos kivy pyinstaller


    【解决方案1】:

    我想这更像是 Pyinstaller 的问题,它是 Kivy 的问题。

    两者都不是:)

    PyInstaller 只是将 python 应用程序包装到一个看起来像本机的 OS X 应用程序包中。
    由于 Kivy 无法在 OS X 中创建菜单栏图标,因此您必须坚持使用 PyObjC。

    首先,您必须安装 Xcode(如果尚未安装)。您可以从 App Store 或Apple's Developer Center 下载。

    然后安装 PyObjC 本身:

    pip install pyobjc
    

    已经有一些使用 PyObjC 创建状态栏图标的示例(firstanother)。

    还有一个很棒的库rumps,它极大地简化了制作状态栏图标、菜单和操作所需的代码。也许它可以帮助您进行状态栏交互。

    【讨论】:

    • 您能展示如何将状态栏与您的应用程序集成吗?
    【解决方案2】:

    Kivy 图形后端提供程序是 OpenGL,通过这种方式,Kivy 应用程序可以通过独特的外观在任何操作系统(IOS、Android、Linux、Windows...)上运行。 您可以使用 kivy ActionBar 来显示菜单或创建一个困难的自定义小部件。这个link 还有这个one 可以帮助你。

    【讨论】:

    • 我也意识到了这一点。但我想要实现的是在 OSX 中使用 PyInstaller 打包的 Kivy 中的本机方法。也就是说,在 OSX 菜单栏中添加一个新的菜单项。我想这更像是 Pyinstaller 的问题,它是 Kivy 的问题。
    【解决方案3】:

    如果使用 PyQt,我可以轻松实现这一点。但是当我使用 Kivy 时,它 看来我不得不求助于其他方式了

    我不明白为什么你不能只使用 PyQt 方法。创建一个单独的文件来运行您的主 Kivy 应用程序调用的图标。
    与 PyQt 一样,我确信 Kivy 有一个退出函数,您可以覆盖它并让它在退出应用程序时终止图标线程。

    唯一潜在的缺点(我能想到的)是它的运行速度可能比在 PyObjC 中实现要慢。

    【讨论】:

      猜你喜欢
      • 2023-02-12
      • 1970-01-01
      • 2017-05-15
      • 2012-04-08
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多