PyQt入门指南三十五 QAction动作组件

在PyQt中,QAction 是一个非常常用的组件,用于表示应用程序中的一个动作,比如菜单项、工具栏按钮或者快捷键。QAction 可以被添加到 QMenuQToolBar 或者直接作为一个按钮使用。

下面是一个简单的例子,展示了如何创建一个 QAction 并将其添加到菜单和工具栏中:

复制代码
python 复制代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QToolBar, QMenu

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建一个QAction实例
        self.action = QAction('Open', self)
        self.action.setShortcut('Ctrl+O')  # 设置快捷键
        self.action.setStatusTip('Open a file')  # 设置状态栏提示
        self.action.triggered.connect(self.on_open)  # 连接信号槽

        # 创建一个菜单栏
        menubar = self.menuBar()
        file_menu = menubar.addMenu('&File')
        file_menu.addAction(self.action)  # 将QAction添加到菜单中

        # 创建一个工具栏
        toolbar = QToolBar(self)
        toolbar.addAction(self.action)  # 将QAction添加到工具栏中

        # 设置主窗口的中心部件(这里可以设置任何QWidget子类)
        self.setCentralWidget(None)

    def on_open(self):
        print('Open action triggered')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

在这个例子中,我们创建了一个名为 MainWindow 的类,它继承自 QMainWindow。在这个类的构造函数中,我们做了以下几件事:

  1. 创建了一个 QAction 实例,并设置了它的文本、快捷键、状态栏提示以及触发的槽函数。
  2. 创建了一个菜单栏,并在其中添加了一个名为 "File" 的菜单。
  3. QAction 添加到了 "File" 菜单中。
  4. 创建了一个工具栏,并将 QAction 添加到了工具栏中。
  5. 定义了一个槽函数 on_open,当 QAction 被触发时,这个函数会被调用。

运行这个程序,你会看到一个带有菜单栏和工具栏的主窗口。点击菜单栏中的 "File" -> "Open" 或者点击工具栏上的按钮,或者按下快捷键 Ctrl+O,都会触发 on_open 函数,并在控制台打印出 "Open action triggered"。

QAction 还有很多其他的属性和方法,比如可以设置图标、启用/禁用动作、检查动作是否被选中等等。你可以根据需要使用这些功能来增强你的应用程序。

相关推荐
郝学胜-神的一滴2 分钟前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
kunge1v53 分钟前
学习爬虫第四天:多任务爬虫
爬虫·python·学习·beautifulsoup
萧鼎12 分钟前
Python schedule 库全解析:从任务调度到自动化执行的完整指南
网络·python·自动化
七七七七071 小时前
【Linux 系统】打开文件和文件系统
linux·运维·spring
B站_计算机毕业设计之家1 小时前
机器学习实战项目:Python+Flask 汽车销量分析可视化系统(requests爬车主之家+可视化 源码+文档)✅
人工智能·python·机器学习·数据分析·flask·汽车·可视化
DeeplyMind2 小时前
第二章:模块的编译与运行-7 Loading and Unloading Modules
linux·驱动开发
羊羊小栈2 小时前
基于「多模态大模型 + BGE向量检索增强RAG」的航空维修智能问答系统(vue+flask+AI算法)
vue.js·人工智能·python·语言模型·flask·毕业设计
星期天要睡觉2 小时前
模型部署——Flask 部署 PyTorch 模型
pytorch·python·flask
weixin_456904272 小时前
SHAP可视化代码详细讲解
python
DTS小夏2 小时前
算法社Python基础入门面试题库(新手版·含答案)
python·算法·面试