MenuBar 详解
在PyQt5中,菜单栏、主菜单和菜单项分别用QMenuBar类、QMenu类和QAction类来表示。
一、定义
菜单栏是GUI应用的常规组成部分,是位于各种菜单中的一组命令操作。菜单栏(QMenuBar) 它分为两部分:主菜单(QMenu) 和 菜单项(QAction)。一个QMenu中可包含任意多个QAction对象,也可包含另外的QMenu,用来表示级联菜单。创建一个菜单,基本上都要用上这3个类。
1.QMenuBar类
QMenuBar类是所有窗口的菜单栏,创建菜单栏的两种方法如下: 方法一: QMenuBar类的构造方法
self.menuBar = PyQt5.QtWidgets.QMenuBar(QMainWindow)
方法二:QMainWindow对象的menuBar()方法
self.menuBar = QMainWindow.menuBar()
创建完菜单栏后,就可以使用QMenuBar类的方法对菜单进行设置。
方法 | 说明。 |
---|
addAction() | 添加菜单项 | addActions() | 添加多个菜单项 | addMenu() | 添加主菜单 |
2.QMenu类
QMenu类是菜单栏中的菜单,可显示文本和图标,但不执行操作,类似于标签label的作用。
方法 | 说明 |
---|
addAction() | 添加菜单项 | addMenu() | 添加主菜单 | setTitle() | 设置菜单的文本 | title() | 获取菜单的文本 |
2.QAction类
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_())
效果图如下:
|