PyQt5之MenuBar菜单控件的使用(三)


MenuBar 详解

在PyQt5中,菜单栏、主菜单和菜单项分别用QMenuBar类、QMenu类和QAction类来表示。


一、定义

菜单栏是GUI应用的常规组成部分,是位于各种菜单中的一组命令操作。菜单栏(QMenuBar) 它分为两部分:主菜单(QMenu)菜单项(QAction)。一个QMenu中可包含任意多个QAction对象,也可包含另外的QMenu,用来表示级联菜单。创建一个菜单,基本上都要用上这3个类。
创建菜单的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_())

效果图如下:
MenuBar效果图


  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5 中,可以使用 QMenuBar 和 QMenu 来创建菜单栏,然后使用 QStackedWidget 来实现界面的切换。 首先,需要导入相关的模块: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QStackedWidget, QWidget ``` 然后,创建主窗口类,并继承自 QMainWindow: ```python class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建菜单menubar = self.menuBar() # 创建菜单 file_menu = menubar.addMenu('文件') edit_menu = menubar.addMenu('编辑') # 创建菜单项 file_action1 = QAction('界面1', self) file_action2 = QAction('界面2', self) edit_action1 = QAction('界面3', self) # 绑定菜单项的触发事件 file_action1.triggered.connect(self.switch_to_page1) file_action2.triggered.connect(self.switch_to_page2) edit_action1.triggered.connect(self.switch_to_page3) # 将菜单项添加到菜单中 file_menu.addAction(file_action1) file_menu.addAction(file_action2) edit_menu.addAction(edit_action1) # 创建堆叠窗口 self.stacked_widget = QStackedWidget() self.setCentralWidget(self.stacked_widget) # 创建页面并添加到堆叠窗口中 self.page1 = QWidget() self.page2 = QWidget() self.page3 = QWidget() self.stacked_widget.addWidget(self.page1) self.stacked_widget.addWidget(self.page2) self.stacked_widget.addWidget(self.page3) def switch_to_page1(self): self.stacked_widget.setCurrentWidget(self.page1) def switch_to_page2(self): self.stacked_widget.setCurrentWidget(self.page2) def switch_to_page3(self): self.stacked_widget.setCurrentWidget(self.page3) ``` 最后,创建 QApplication 对象,并将主窗口显示出来: ```python if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这样就可以通过菜单栏的选项来切换不同的界面了。你可以根据需要在每个页面中添加对应的控件和布局。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值