PyQt学习笔记(6)--Actions and Key Sequence

在 Qt中,目前我认为做的最好的两种机制就是:SIGNAL and SLOTS和  Actions and Key  Sequences。  Actions  and  Key  Sequence我对他的理解就是各种动作带来的核心一致反应。举个例子:

    比如我们在应用程序中常见的“新建文件”这一功能,他的实现可以通过下面几种方式:

1.点击菜单:File->New菜单项

2.点击工具栏:new的图标

3.键盘快捷方式:如   Ctrl+N

   上面的这三种 actions,其实带来的结果(Sequence)是一样的,就是新建文件,那么在程序中如何做到三者的统一和同步,Qt给了很好的解决方法。在  PyQt中,它把类似上面的 actions封装(encapsulates)到一个  Qaction的 class中,下面举个例子:(windows环境下)

#!/usr/bin/env python
#coding=utf-8

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MainWindow(QMainWindow):
    def __init__(self,parent=None):
        super(MainWindow,self).__init__(parent)
        
        #新建一个工具栏部件,添加照片并关联功能为New
        fileNewAction=QAction(QIcon("./images/filenew.png"),"&New",self)
        #设置快捷键,QKeySequence.New相当于ctrl+n
        fileNewAction.setShortcut(QKeySequence.New)
        helpText = "Create a new file"
        #为工具栏部件设置状态信息
        fileNewAction.setToolTip(helpText)
        fileNewAction.setStatusTip(helpText)
        #SIGNAL("triggered()")与SIGNAL("click()")差不多,但是还可以通过出左点击鼠标外的方式激活triggered
        self.connect(fileNewAction,SIGNAL("triggered()"),self.fileNew)
        #新建一个菜单栏部件
        self.fileMenu = self.menuBar().addMenu("&file")
        self.fileMenu.addAction(fileNewAction)
        #创建工具栏
        filetoolbar = self.addToolBar("file")
        filetoolbar.addAction(fileNewAction)
        #新建一个状态栏部件
        self.status = self.statusBar()
        self.status.showMessage("This is StatusBar",5000)
        self.setWindowTitle("PyQt MianWindow")

    def fileNew(self):
        self.status.showMessage("You have created a newfile!",9000)
    
def main():
    app = QApplication(sys.argv)
    app.setApplicationName("PyQt MianWindow")
    app.setWindowIcon(QIcon("./images/icon.png"))
    form = MainWindow()
    form.show()
    app.exec_()
    
main()
   运行结果入下:


   上面程序的目的就是:要让点击菜单 new,Ctrl+N,点击工具栏 new按钮三种  action都执行命令fileNew()。

   其中红色部分就是 Qaction部分,其中的  QKeySequence.New就是基本多平台都统一使用的新建的响应快捷键 Ctrl+N,如果我们需要的快捷键没有,那么我们可以自己设置,就是填写快捷键的名称比如:         fileNewAction.setShortcut(“Ctrl+N”)。把这个action都给了菜单  new和工具栏,通过 connect绑定,他们都执行同一响应。

    一句话搞定。QKeySequence.New也可以用”Ctrl+n”代替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值