PyQt5 menuBar出了点问题

时间:2018-08-16 08:30:46

标签: python macos pyqt pyqt5 menubar

当我使用PyQt5构建带有菜单栏的GUI窗口时出了点问题。

这是我的代码:

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QApplication

class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        bar = self.menuBar()              

        example1 = QAction('Exit', self)        
        example1.setShortcut('Ctrl+E')
        example1.triggered.connect(self.close)

        example2 = QAction('xit', self)        
        example2.setShortcut('Ctrl+A')
        example2.triggered.connect(self.close)

        example3 = QAction('Quit', self)        
        example3.setShortcut('Ctrl+Q')
        example3.triggered.connect(self.close)

        fileMenu = bar.addMenu('File')
        fileMenu.addAction('NNN')
        fileMenu.addAction(example1)
        fileMenu.addAction(example2)
        fileMenu.addAction(example3)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menu Example')    
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行此命令时,菜单栏如下所示:

enter image description here

如图所示,“退出”和“退出”消失了,但是快捷方式有效。

我的环境:Python 3.6.5,PyQt 5.11.1,MAC_OS 10.13.5

1 个答案:

答案 0 :(得分:1)

qt网站说以下内容

  

注意:不要调用QMainWindow :: menuBar()创建共享菜单   栏,因为该菜单栏将QMainWindow作为其父级。   该菜单栏只会显示给父QMainWindow。

尝试将bar = self.menuBar()更改为bar = QtGui.MenuBar()

请参阅参考表here