欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

PyQt學習筆記(6)——Actions and Key Sequences

系統 2318 0

PyQt學習筆記(6)——Actions?and?Key?Sequences_蕭蕭_新浪博客

??? PyQt學習筆記(6)——Actions and Key Sequences
??? (2010-02-20 09:40:24)
??? 轉載▼
??? 標簽:
??? python
??? pyqt4
??? it
??? ??? 分類: Python

??? 在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)

????

??????????? fileNewAction=QAction(QIcon("./images/filenew.png"),"&New",self)

??????????? fileNewAction.setShortcut(QKeySequence.New)

??????????? helpText = "Create a new file"

??????????? fileNewAction.setToolTip(helpText)

??????????? fileNewAction.setStatusTip(helpText)

??????????? 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 new file!",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綁定,他們都執行同一響應。

??? 從上面可以看到,每次創建一個QAction都需要五六行,如果在一個應用程序中都這么創建會很費時間的,所以我們可以寫一個函數來封裝這一功能:
???????? def createAction(self,text,slot=None,shortcut=None, icon=None,

?????????????????? tip=None,checkable=False,signal="triggered()"):

??????????? action = QAction(text, self)

??????????? if icon is not None:

??????????????? action.setIcon(QIcon("./images/%s.png" % icon))

??????????? if shortcut is not None:

??????????????? action.setShortcut(shortcut)

??????????? if tip is not None:

??????????????? action.setToolTip(tip)

??????????????? action.setStatusTip(tip)

??????????? if slot is not None:

??????????????? self.connect(action, SIGNAL(signal), slot)

??????????? if checkable:

??????????????? action.setCheckable(True)

??????????? return action

??? 有了這個函數以后,我們可以定義上面的fileNewAction了:

??? fileNewAction = self.createAction("&New...", self.fileNew,

??????????????????? QKeySequence.New, "filenew", "Create an image file")

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

????

PyQt學習筆記(6)——Actions and Key Sequences


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩一区二区在线视频 | 蜜桃日本免费MV免费播放 | 成人在线免费观看 | va日本 | 亚洲精品人成网线在线 | 99视频在线精品 | 狠狠躁夜夜躁人人爽天天高潮 | 久久亚洲美女久久久久 | 亚洲午夜精品久久久久久成年 | 欧美一区二区三区爽大粗免费 | 在线精品亚洲欧美日韩国产 | 久久久综合视频 | 国产成人综合一区二区三区 | 精品久久久久久久久久 | 快射视频欧美 | 欧美日韩中文一区 | 久久影院在线观看 | 婷婷激情久久 | 国产一区二区三区免费观看 | 日韩a无v码在线播放免费 | 天天在线欧美精品免费看 | 91热视频在线观看 | 欧美一级高潮片免费的 | 香蕉国产人午夜视频在线观看 | 一区二区三区四区国产 | 精品国产乱码久久久久久牛牛 | 蜜桃精品久久久久久久免费影院 | 999精品视频在线观看 | 香蕉久草在线 | 亚洲第1页 | 一级做a爰性色毛片免费 | 亚洲日本中文字幕天天更新 | 毛片毛片毛片毛片毛片毛片 | 香港三级大全 | 一区二区三区四区在线播放 | 国产午夜免费一区二区三区 | 亚洲在成人网在线看 | 久久99精品久久久97夜夜嗨 | 一级毛片成人午夜 | 久久福利青草精品资源 | 91华人在线视频 |