PyQt5 菜单栏(QMenuBar)详解
在PyQt5中,菜单栏(QMenuBar)是GUI应用程序中常用的组件,通常位于窗口顶部,用于组织应用的功能。下面详细介绍QMenuBar的使用方法和相关概念。
基本概念
- 菜单栏(QMenuBar):窗口顶部的水平条,包含多个菜单
- 菜单(QMenu):下拉式选项组,属于菜单栏的子项
- 菜单项(QAction):菜单中的具体功能项,可以触发事件
- 子菜单(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

最低0.47元/天 解锁文章
234

被折叠的 条评论
为什么被折叠?



