【问题标题】:Menu entry not shown on Mac OSMac OS 上未显示菜单项
【发布时间】:2015-02-17 10:23:43
【问题描述】:

我正在尝试将我的 PyQt 程序移植到 Mac OS。我是在 Linux 上开发的。

PyQt (4) 安装在两台电脑上,python 3.4。一切似乎都奏效了。该程序在 Linux 计算机上完美运行。我只是将它传输到 mac 计算机,并尝试运行它。它运行,除了一件事:

我有一个菜单项(在菜单栏中),用于程序的设置:

# Action to show a settings window
self.settingsAction = QtGui.QAction('Settings', self)
self.settingsAction.triggered.connect(lambda: Settings(self))

...Some code...

# Menu entry for the settings
self.menubar.addAction(self.settingsAction)

在 Linux 上,“设置”条目完美地显示在菜单栏中,并打开设置窗口。但是,在 Mac OS 上,不显示设置条目。根本不显示。所有其他条目(文件、编辑、视图等)都正确显示,但设置不正确。并且没有引发异常。

我被困在这里,我从来没有使用过 Mac OS,所以我什至不知道从哪里开始调试。

你有什么建议吗?

编辑:

我也试过

# 显示设置窗口的操作 self.settingsAction = QtGui.QAction('Preferences', self) self.settingsAction.triggered.connect(lambda: Settings(self))

...Some code...

# Menu entry for the settings
self.menubar.addAction(self.settingsAction)

【问题讨论】:

  • 可能是因为OS X中每个应用的菜单栏都显示在屏幕顶部。
  • 如果你输入 cmd + , 会发生什么?
  • @1Darco1,是的,我知道,但事实并非如此。托马斯,你什么意思?
  • 在 Mac Os 中,设置条目显示在 Application name 菜单中。 (如果存在此快捷方式将调用设置)
  • Mac OS 上的菜单有一些特殊的行为。我不确定您是否可以将这样的 QActions 添加到 Mac OS 菜单栏中;您可能需要为其创建一个实际列表,例如“文件”和“编辑”菜单,并且其中只有一项。此外,正如@Thomas 所提到的,在 Mac OS X 上,首选项/设置菜单位于不同的位置。

标签: python linux macos pyqt


【解决方案1】:

Mac 在菜单栏方面有奇怪的行为。请记住,mac 菜单栏显示在最顶部的系统菜单栏中,而不是像 Windows 或 Linux 机器上的窗口中。一种解决方案是使用非本地菜单栏,使其出现在类似于 Windows 或 Linux 机器的窗口中。

menubar = self.menuBar()
menubar.setNativeMenuBar(False)

另外,当在 Mac 上使用 PyQt 时,系统会拦截某些包含单词“退出”、“退出”、“设置”、“设置”、“首选项”以及可能还有很多其他的命令,并删除它们从您的菜单栏中,因为它们是保留标签。如果菜单栏标题没有项目,它将不会显示,使其看起来好像您没有修改菜单栏。

#exit = QtGui.QAction( 'Exit', self ) #this fails on my system
exit = QtGui.QAction( 'SomethingElse', self ) #this displays on my system
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exit)

我在这里找到了“退出”信息:http://python.6.x6.nabble.com/addAction-to-menubar-td1916296.html

此外,调用 raise_(​​) 不会更改我的 mac(小牛队)上的菜单栏。我必须手动选择窗口(通过单击其他地方然后重新单击窗口)才能为我的 pyqt 应用程序显示正确的菜单栏。

我希望这可以帮助其他人解决这些问题。

【讨论】:

    【解决方案2】:

    感谢@Greg。我想在 Mac 上补充一点,菜单必须至少有一个操作,否则不会显示。下面是Mac上的效果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多