【发布时间】:2017-01-27 04:45:43
【问题描述】:
我一直在使用 PyQt5 开发 GUI,并希望包含一个菜单栏。但是,当我编写此功能的代码时,我的菜单不会出现。弄清楚我对如何在 PyQt5 中实现菜单栏的理解不正确,我在网上寻找了一个预先存在的示例。经过一些调整,我开发了以下测试用例:
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QAction, qApp
class Example(QMainWindow):
def __init__(self):
super().__init__()
exitAction = QAction(QIcon('exit.png'), '&Exit', self)
exitAction.triggered.connect(qApp.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&Testmenu')
fileMenu.addAction(exitAction)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
但是,当我运行此程序时,找不到 Testmenu。
在使用 pyuic5 将 .ui 文件转换为可导入的 .py 之前,我还尝试在 QTCreator 中创建菜单栏(以及我的 GUI 布局的其余部分)。我认为这会消除我的一些编程错误,但菜单栏仍然不会显示。有什么想法吗?
编辑:
我正在使用 Python 3.5 (Anaconda 4.1) 从 Jupyter 笔记本 4.1 版中运行此代码。我还在使用运行 os 10.1l、PyQt 5.7 和 Qt 版本 5.7.0 的 Macbook。
我已经意识到,如果我单击应用程序窗口然后单击返回窗口,菜单栏将变得响应 - 有效地取消焦点并聚焦应用程序。有了这些信息,我意识到我不是第一个注意到这个问题的人(参见https://github.com/robotology/yarp/issues/457)。不幸的是,我仍然不确定如何解决这个问题。
【问题讨论】:
-
@ekhumoro 我不明白这与我在 PyQt 中的问题有何关系。
-
这几乎可以肯定是 osx 特有的问题。您的示例在 linux 上运行良好(也可能在 Windows 上)。自从menus seem to work differently on osx 以来,也许您应该准确地说明您希望看到什么,以及您实际得到什么。也许一些屏幕截图会有所帮助。您还应该说明您正在使用的 qt5/pyqt5 的确切版本。
-
请说明您正在使用的 Qt 的确切版本,因为这几乎肯定是问题所在(而不是 PyQt)。
标签: python macos pyqt pyqt5 menubar