找回密码
 立即注册
Qt开源社区 门户 查看内容

PyQt 的动作(QAction)

2019-2-18 06:33| 发布者: admin| 查看: 2908| 评论: 0

摘要: 作者:Python编程 pyqt matplotlib PyQt使用各种动作(QAction)来为主窗口应用程序用户提供各种功能,这些动作会有文本(用在菜单,含菜单栏菜单和快捷菜单)、图标(用在菜单和工具栏上)、工具栏提示信息、状态栏 ...
作者:Python编程 pyqt matplotlib

PyQt使用各种动作(QAction)来为主窗口应用程序用户提供各种功能,这些动作会有文本(用在菜单,含菜单栏菜单和快捷菜单)、图标(用在菜单和工具栏上)、工具栏提示信息、状态栏提示信息,以及连接的触发时供调用的槽。动作可以设为可选中,即可通过点击来切换状态。如有必要,动作还可以绑定数据。

 值得注意的是,需要给QAction一个父类对象,例如,主窗口,以便声明动作的作用域,还可以确保在适当的时候删除它们。

例如,若要创建一个“打开文件”的动作,可以这样写(这里会假设已有适当的图标和fileOpen方法):

    self.fileOpenAction=QAction(QIcon("open.png"),"&Open",self) # 动作在self中可用

    self.fileOpenAction.setShortcut(QKeySequence.Open)#设置标准化快捷键
    self.fileOpenAction.setToolTip("打开文件")#工具栏提示文本
    self.fileOpenAction.setStatusTip("打开已有的文件")#状态栏提示文本
    self.fileOpenAction.triggered.connect(self.fileOpen)#连接槽



再例如,若要创建文本加粗动作(可切换状态),可以这样写:

        self.actionTextBold = QAction(QIcon("textbold.png"),"&Bold",self) # 动作在self中可用
        self.actionTextBold.setShortcut(QKeySequence.Bold)#设置跨平台标准化快捷键
        #windows 系统下快捷键"Ctrl+B"
        self.actionTextBold.setToolTip("文本加粗")#工具栏提示文本
        self.actionTextBold.setStatusTip("文本加粗")#状态栏提示文本
        self.actionTextBold.setCheckable(True)#设为可选中(可切换状态)
        self.actionTextBold.toggled[bool].connect(self.textBold)#连接toggled信号的槽
        #self.actionTextBold.toggled.connect(self.textBold)#也可以不指名信号参数

        #也任然可以用triggered信号,但此时不能传递bool参数(选中状态)
        #self.actionTextBold.triggered.connect(self.textBold)

也可以在初始化时设定QAction的各项参数:

        self.actionTextBold = QAction(
                QIcon.fromTheme('format-text-bold',
                        QIcon('textbold.png')),
                "&Bold", self, priority=QAction.LowPriority,
                shortcut=Qt.CTRL + Qt.Key_B,
                triggered=self.textBold, checkable=True)


-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

1人点赞鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)


公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了