pyqt QMenuBar

PyQt5 菜单栏(QMenuBar)详解

在PyQt5中,菜单栏(QMenuBar)是GUI应用程序中常用的组件,通常位于窗口顶部,用于组织应用的功能。下面详细介绍QMenuBar的使用方法和相关概念。

基本概念

  1. 菜单栏(QMenuBar):窗口顶部的水平条,包含多个菜单
  2. 菜单(QMenu):下拉式选项组,属于菜单栏的子项
  3. 菜单项(QAction):菜单中的具体功能项,可以触发事件
  4. 子菜单(QMenu):嵌套在其他菜单中的菜单

基础用法示例

下面是一个完整的示例,展示了如何创建一个包含多级菜单和各种功能的菜单栏:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon, QFont, QColor

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
        
    def init_ui(self):
        # 设置窗口基本属性
        self.setWindowTitle("PyQt5 菜单栏示例")
        self.setGeometry(300, 300, 800, 600)
        
        # 创建菜单栏
        self.create_menu_bar()
        
        # 创建工具栏
        self.create_tool_bar()
        
        # 创建状态栏
        self.create_status_bar()
        
        # 创建中央部件
        self.create_central_widget()
        
    def create_menu_bar(self):
        # 创建菜单栏
        menu_bar = self.menuBar()
        
        # 1. 文件菜单
        file_menu = menu_bar.addMenu("文件(&F)")
        
        # 添加新建文件动作
        new_action = QAction("新建(&N)", self)
        new_action.setShortcut("Ctrl+N")
        new_action.setStatusTip("创建新文件")
        new_action.triggered.connect(self.new_file)
        file_menu.addAction(new_action)
        
        # 添加打开文件动作
        open_action = QAction("打开(&O)...", self)
        open_action.setShortcut("Ctrl+O")
        open_action.setStatusTip("打开现有文件")
        open_action.triggered.connect(self.open_file)
        file_menu.addAction(open_action)
        
        # 添加分隔线
        file_menu.addSeparator()
        
        # 添加保存动作
        save_action = QAction("保存(&S)", self)
        save_action.setShortcut("Ctrl+S")
        save_action.setStatusTip("保存当前文件")
        save_action.triggered.connect(self.save_file)
        file_menu.addAction(save_action)
        
        # 添加另存为动作
        save_as_action = QAction("另存为(&A)...", self)
        save_as_action.setShortcut("Ctrl+Shift+S")
        save_as_action.setStatusTip("将文件另存为")
        save_as_action.triggered.connect(self.save_file_as)
        file_menu.addAction(save_as_action)
        
        # 添加分隔线
        file_menu.addSeparator()
        
        # 添加退出动作
        exit_action = QAction("退出(&X)", self)
        exit_action.setShortcut("Ctrl+Q")
        exit_action.setStatusTip("退出应用程序")
        exit_action.triggered.connect(self.close)
        file_menu.addAction(exit_action)
        
        # 2. 编辑菜单
        edit_menu = menu_bar.addMenu("编辑(&E)")
        
        # 添加撤销动作
        undo_action = QAction("撤销(&U)", self)
        undo_action.setShortcut("Ctrl+Z")
        undo_action.setStatusTip("撤销上一步操作")
        edit_menu.addAction(undo_action)
        
        # 添加重做动作
        redo_action = QAction("重做(&R)", self)
        redo_action.setShortcut("Ctrl+Y")
        redo_action.setStatusTip("重做上一步操作")
        edit_menu.addAction(redo_action)
        
        # 添加分隔线
        edit_menu.addSeparator()
        
        # 添加剪切动作
        cut_action = QAction("剪切(&T)", self)
        cut_action.setShortcut("Ctrl+X")
        cut_action.setStatusTip("剪切选中内容")
        edit_menu.addAction(cut_action)
        
        # 添加复制动作
        copy_action = QAction("复制(&C)", self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值