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

相关推荐
程序员皮皮林42 分钟前
Java 25 正式发布:更简洁、更高效、更现代!
java·开发语言·python
好家伙VCC44 分钟前
**发散创新:AI绘画编程探索与实践**随着人工智能技术的飞速发展,AI绘
java·人工智能·python·ai作画
拥友LikT1 小时前
惠普DL380服务器安装系统以后无法读取到系统盘启动解决方案(其他品牌服务器类似解决思路)
linux·服务器系统安装
程序猿编码1 小时前
Linux 文件变动监控工具:原理、设计与实用指南(C/C++代码实现)
linux·c语言·c++·深度学习·inotify
网硕互联的小客服1 小时前
SSD和HDD存储应该如何选择?
linux·运维·服务器·网络·安全
lemon3106241 小时前
浪潮服务器装linux系统步骤
linux·运维·服务器
gugugu.1 小时前
Linux进程:进程状态
linux·运维·服务器
Wang's Blog1 小时前
Linux小课堂: Apache虚拟主机配置之基于IP与域名的服务器部署指南
linux·服务器·apache
Wang's Blog1 小时前
Linux小课堂: Apache服务在CentOS上的安装与基础配置指南
linux·centos·apache
广药门徒1 小时前
Linux 驱动开发中,主设备号和次设备号不同的两个驱动能否正常工作
linux·运维·驱动开发