原文: https://pythonspot.com/pyqt5-menu/

要为 PyQt5 程序创建菜单,我们需要使用QMainWindow。 这种类型的菜单在许多应用程序中都可见,并显示在窗口栏的正下方。 它通常具有文件和编辑子菜单。

可以使用menuBar()方法创建顶部菜单。 子菜单添加了addMenu(name)。示例:

  1. mainMenu = self.menuBar()
  2. fileMenu = mainMenu.addMenu('File')
  3. editMenu = mainMenu.addMenu('Edit')
  4. viewMenu = mainMenu.addMenu('View')
  5. searchMenu = mainMenu.addMenu('Search')
  6. toolsMenu = mainMenu.addMenu('Tools')
  7. helpMenu = mainMenu.addMenu('Help')

可以将单个按钮添加到菜单中,如下所示:

  1. exitButton = QAction(QIcon('exit24.png'), 'Exit', self)
  2. exitButton.setShortcut('Ctrl+Q')
  3. exitButton.setStatusTip('Exit application')
  4. exitButton.triggered.connect(self.close)
  5. fileMenu.addAction(exitButton)

PyQt5 菜单示例

完整代码:

  1. import sys
  2. from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QAction
  3. from PyQt5.QtGui import QIcon
  4. from PyQt5.QtCore import pyqtSlot
  5. class App(QMainWindow):
  6. def __init__(self):
  7. super().__init__()
  8. self.title = 'PyQt5 menu - pythonspot.com'
  9. self.left = 10
  10. self.top = 10
  11. self.width = 640
  12. self.height = 400
  13. self.initUI()
  14. def initUI(self):
  15. self.setWindowTitle(self.title)
  16. self.setGeometry(self.left, self.top, self.width, self.height)
  17. mainMenu = self.menuBar()
  18. fileMenu = mainMenu.addMenu('File')
  19. editMenu = mainMenu.addMenu('Edit')
  20. viewMenu = mainMenu.addMenu('View')
  21. searchMenu = mainMenu.addMenu('Search')
  22. toolsMenu = mainMenu.addMenu('Tools')
  23. helpMenu = mainMenu.addMenu('Help')
  24. exitButton = QAction(QIcon('exit24.png'), 'Exit', self)
  25. exitButton.setShortcut('Ctrl+Q')
  26. exitButton.setStatusTip('Exit application')
  27. exitButton.triggered.connect(self.close)
  28. fileMenu.addAction(exitButton)
  29. self.show()
  30. if __name__ == '__main__':
  31. app = QApplication(sys.argv)
  32. ex = App()
  33. sys.exit(app.exec_())

结果:

PyQt5 菜单 - 图1

下载 PyQT5 示例