在PyQt5中,菜单栏、主菜单和菜单项分别用QMenuBar类、QMenu类和QAction类来表示。
菜单栏是GUI应用的常规组成部分,是位于各种菜单中的一组命令操作。菜单栏(QMenuBar) 它分为两部分:主菜单(QMenu) 和 菜单项(QAction)。一个QMenu中可包含任意多个QAction对象,也可包含另外的QMenu,用来表示级联菜单。创建一个菜单,基本上都要用上这3个类。
QMenuBar类是所有窗口的菜单栏,创建菜单栏的两种方法如下:方法一: QMenuBar类的构造方法
self.menuBar = PyQt5.QtWidgets.QMenuBar(QMainWindow)
方法二:QMainWindow对象的menuBar()方法
self.menuBar = QMainWindow.menuBar()
创建完菜单栏后,就可以使用QMenuBar类的方法对菜单进行设置。
方法 | 说明 |
---|---|
addAction() | 添加菜单项 |
addActions() | 添加多个菜单项 |
addMenu() | 添加主菜单 |
QMenu类是菜单栏中的菜单,可显示文本和图标,但不执行操作,类似于标签label的作用。
方法 | 说明 |
---|---|
addAction() | 添加菜单项 |
addMenu() | 添加主菜单 |
setTitle() | 设置菜单的文本 |
title() | 获取菜单的文本 |
PyQt5中将用户与界面进行交互的元素抽象为一种“动作”,用QAction类表示。QAction类是一个运行在菜单栏、工具栏和定制键盘快捷键的抽象类,它是一个真正执行操作的部件。该类有一个常用的信号triggered,用来在单击菜单项时发射。
方法 | 说明 |
---|---|
setIcon() | 设置菜单项图标 |
setShortcut() | 设置快捷键 |
setEnabled() | 设置菜单项是否可用 |
title() | 获取菜单项的文本 |
在下面的例子中,我们创建了一个带有菜单的菜单栏。这个菜单包含了一个动作,如果选中,就会终止应用程序。代码如下(示例):
# -*- coding: utf-8 -*- # @Time : 2022/7/14 14:14 import sys from PyQt5.QtWidgets import QMainWindow, QAction, QApplication, qApp from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.my_initUI() def my_initUI(self): exitAct = QAction(QIcon('images/exit.ico'), '退出&(Q)', self) #创建QAction类的对象exitAct。QAction是一个用于菜单栏、工具栏或自定义快捷键的抽象动作行为 exitAct.setShortcut('Ctrl+Q') #调用对象的方法,为这个动作定义一个快捷键 # exitAct.setStatusTip('退出应用') #创建一个当我们鼠标浮于菜单项之上就会显示的一个状态提示 exitAct.triggered.connect(qApp.quit) #选中特定的动作,触发信号被发射。信号连接到 QApplication组件的 quit()方法,这样就中断了应用 # self.statusBar() #创建状态栏,用来显示上面的状态提示 menubar = self.menuBar() # menuBar()方法创建了一个菜单栏 fileMenu = menubar.addMenu('文件&(F)') #创建一个文件菜单,设置快捷键F fileMenu.addAction(exitAct) #将退出动作添加到file菜单中 self.setGeometry(300,300,400,300) self.setWindowTitle('菜单栏') self.show() if __name__=='__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
效果图如下: