【问题标题】:QMessageBox About dialog on MacOS vs Windows / LinuxQMessageBox 关于 MacOS 与 Windows / Linux 上的对话框
【发布时间】:2019-11-16 17:04:18
【问题描述】:

我正在构建一个 PyQt5 应用程序,并希望显示一些基本的“关于”信息。我认为 QtWidgets.QMessagebox.about 将是一个很好的实现:

class gGuiGlueApplication(GlueApplication):

   def __init__(self):
      ...
      menu_about_ggui = self.menuBar().addMenu("&gGui Help") 
      menu_about_ggui.addAction("About gGui", self.show_about_ggui)
      ...    

   def show_about_ggui(self):
        """Displays about gGui Message Box"""
        QtWidgets.QMessageBox.about(
            self,
            "About gGui",
            "gPhoton Graphical User Interface (gGui)\n"
            "Developed by Duy Nguyen, Scott Fleming\nVersion: "
            + __version__
            + "\n\ngGui is provided under the AURA Software License. "
            "Please see the included license for details.",
        )

我在 Windows 和 Red Hat Enterprise Linux 7 上亲自测试过;一切看起来都是正确的。 about 按钮位于右侧菜单“About gGui”下方,显示相应信息:

我的合作者在 macOS 上注意到,它并没有以这种方式出现。 about 选项在我制作的菜单中不可见,而是在“Python”菜单下,错误地标记为“About Python”:

可以理解,这自然是 macOS 上有关信息的地方,但对于我们的用户来说,“python”是我们的应用程序并不明显。看起来 macOS 正在覆盖我们对 about 选项的放置和命名。至少,我们希望它说“关于 gGui”而不是通用的“关于 Python”。根据Qt QMenu.addAction Docs,第一个参数指示选项标题,根据Qt QMessageBox.about Documentation,第一个参数指示“标题”。

我们如何强制将 macOS 中的 about 文本更改为“关于 gGui”,甚至可以强制将 about 信息到适当的菜单以跨平台保持一致?

提前致谢!

其他信息:Python 3.7.1、PyQt5 5.13.2、PyQt5 SIP 12.7.0、QtPy 1.9.0

附:请忽略 Windows 菜单屏幕截图中的“加载 gGui 示例数据”选项

【问题讨论】:

    标签: python macos pyqt5 qmessagebox


    【解决方案1】:

    解决这个问题的最简单方法似乎是使用以下选项:

    QApplication.setAttribute(Qt.AA_DontUseNativeMenuBar)
    

    这将为您的应用程序提供类似于在 Windows / Linux 中看到的菜单栏,而不是屏幕顶部的系统菜单栏。单个菜单栏也可以通过setNativeMenuBar 方法进行控制。但是,这种方法可能无法为某些 macOS 用户所接受。

    根据Qt for macOs: Menu Bar,另一种解决方案是使用操作的menu-role 来控制关于菜单项的显示方式:

    action = QAction(self)
    action.triggered.connect(self.show_about_ggui)
    action.setMenuRole(QAction.AboutRole)
    menu_about_ggui.addAction(action)
    

    但要使其正常工作,您还需要正确设置应用程序名称,以便它替换默认的“Python”。有关该问题的解决方案,请参阅此问题:

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2018-08-10
      • 2014-12-04
      相关资源
      最近更新 更多