我一直在开发一个使用PyQt5的GUI,并希望包含一个菜单栏。但是,当我去编写此功能时,我的菜单不会出现。让我对如何在PyQt5中实现菜单栏的理解失去了兴趣,我在网上寻找了一个预先存在的例子。随着一些调整我制定了以下测试案例:在PyQt5中缺少menuBar
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的代码(蟒蛇4.1)从Jupyter笔记本电脑中,4.1版。我也在使用运行os 10.1l的Macbook,PyQt 5.7和Qt版本5.7.0。
我已经意识到,如果点击应用程序窗口,然后再点击回窗口,菜单栏将变得响应 - 有效地不重点和聚焦应用程序。有了这些信息,我意识到我不是第一个注意到这个问题的人(见https://github.com/robotology/yarp/issues/457)。不幸的是,我仍然不确定如何解决这个问题。
[OS X上的QMenuBar](http://doc.qt.io/qt-5/qmenubar.html#qmenubar-on-os-x)。 – ekhumoro
@ekhumoro我不明白这与我在PyQt中的问题有何关系。 – user144153
这几乎肯定是一个osx特有的问题。你的例子在Linux上运行良好(可能也在Windows上运行)。由于[菜单在osx上的工作方式似乎不同](http://doc.qt.io/qt-5/osx-issues.html#menu-bar),也许你应该正确地*拼出*你期望看到的内容,和你实际得到什么。也许一些截图会有所帮助。你也应该说明你正在使用的qt5/pyqt5的确切版本。 – ekhumoro