【问题标题】:Why does PyQt menu get frozen on macOS?为什么 PyQt 菜单在 macOS 上被冻结?
【发布时间】:2021-07-31 03:52:33
【问题描述】:

我在 macOS Catalina 上编写了一个最小的 PyQt 5.15 应用程序。它只有一个菜单和一个项目。虽然我可以看到菜单,但单击它不会打开它。它完全没有反应。事实上,当我的应用程序处于焦点时,甚至 macOS(苹果图标)都不会打开。如果我不关注然后重新关注应用程序,菜单就会起作用。我在 Windows 10 上运行了相同的程序,没有出现这样的问题。

是什么导致菜单栏在 macOS 中无法正常工作?

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QAction


class MainWindow(QMainWindow):

     def __init__(self):
         super().__init__()

        insert_action = QAction("&Open", self)
        insert_action.triggered.connect(self.open_file)

        menu = self.menuBar()

        file_menu = menu.addMenu("&File")
        file_menu.addAction(insert_action)

    def open_file(self):
        pass


app = QApplication(sys.argv)
w = MainWindow()
w.show()

app.exec_()

【问题讨论】:

    标签: macos qt menu pyqt


    【解决方案1】:

    这不是一个完整的答案,而是一种解决方法:

    menu.setNativeMenuBar(False)

    使用窗口上的非本地 macOS 菜单,类似于 Windows 和 Linux 上的菜单。

    也有online discussions提到,把app做成bundle可以解决问题,不过我没试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 2020-10-24
      • 2012-10-14
      • 1970-01-01
      • 2014-09-04
      相关资源
      最近更新 更多