成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

python GUI庫圖形界面開發之PyQt5信號與槽基礎使用方法與實例

瀏覽:2日期:2022-08-03 14:05:43
信號與槽有三種使用方法

第一種:內置信號與槽的使用

第二種:自定義信號與槽的使用

第三種:裝飾器的信號與槽的使用

一: 內置信號與槽的使用

內置信號與槽的使用,是指在發射信號時,使用窗口控件的函數,而不是自定義的函數,這種也是我們前面用的最多的,下面簡單的一個實例,大家就會明白

import sysfrom PyQt5.QtWidgets import QMessageBox,QPushButton,QApplication,QWidgetapp=QApplication(sys.argv)widget=QWidget()def showMsg(): QMessageBox.information(widget,’信息提示框’,’Ok 彈出測試信息’)btn=QPushButton(’測試點擊按鈕’,widget)btn.clicked.connect(showMsg)widget.show()sys.exit(app.exec_())

運行腳本,顯示效果如下

python GUI庫圖形界面開發之PyQt5信號與槽基礎使用方法與實例python GUI庫圖形界面開發之PyQt5信號與槽基礎使用方法與實例

這個例子將一個按鈕對象的內置clicked信號與自定義槽函數showMsg()連接,單擊按鈕,就會觸發這個槽函數,彈出一個信息提示框

二:自定義信號與槽的使用

自定義信號與槽的使用,是指在發射信號時,不使用窗口控件的函數,而是使用自定義的函數,(簡單的說就是使用oyqtsSignal類實例發射信號),之所以要使用自定義的信號與槽,是因為通過內置函數發射信號有自身的缺陷,首先,內置函數只包含一些常用地信號,有些信號發射找不到對應的內置函數,其次在特定的情況下,才能發射此信號,如按鈕的點擊事件,最后,內置函數傳遞的參數是特定的,不可以自定義,使用自定義的信號與槽函數則沒有這些缺陷

在pyqt5中,自定義信號與槽的適用很靈活,比如因為業務需要,在程序中的某些地方需要發射一個信號,傳遞多種數據,然后在槽函數接受這些數據,這樣就可以很靈活的實現一些業務邏輯

簡單的一個實例:簡單的自定義信號與槽

from PyQt5.QtCore import QObject,pyqtSignal#信號對象class QTypeSignal(QObject): #定義一個信號 # sendmsg = pyqtSignal(object) #todo 優化 多個參數傳遞 sendmsg=pyqtSignal(str,str) def __init__(self): super(QTypeSignal, self).__init__() def run( self ): #發射信號 #self.sendmsg.emit(’hell’) #todo 優化 發射多個參數 self.sendmsg.emit(’第一參數’,’第二個參數’)#槽對象class QTypeSlot(QObject): def __init__(self): super(QTypeSlot, self).__init__() #槽對象中的槽函數 # def get( self,msg ): # print('QSlot get msg => ' + msg) #todo 優化 多個參數 def get( self,msg1,msg2 ): print('QSlot get msg => ' + msg1+’ ’+msg2)if __name__ == ’__main__’: #實例化信號對象 send=QTypeSignal() #實例化槽對象 slot=QTypeSlot() #1 print(’_____-把信號綁定到槽函數上_____’) send.sendmsg.connect(slot.get) send.run() print(’_____-把信號與槽函數解綁_____’) send.sendmsg.disconnect(slot.get) send.run()

python GUI庫圖形界面開發之PyQt5信號與槽基礎使用方法與實例

信號與槽連接的主要步驟如下

第一步:生成一個信號

#定義一個信號

# sendmsg = pyqtSignal(object)

#todo 優化 多個參數傳遞

sendmsg=pyqtSignal(str,str)

第二步:將信號與槽函數連接起來

print(’_____-把信號綁定到槽函數上_____’)

send.sendmsg.connect(slot.get)

第三步:槽函數接受數據

def get( self,msg1,msg2 ):

print('QSlot get msg => ' + msg1+’ ’+msg2)

第四步:發射信號的實現

self.sendmsg.emit(’第一參數’,’第二個參數’)

第五步:將信號綁定到槽對象中的槽函數上,所以槽函數能收到所發射的信號,自此,數據傳遞成功,就是這么簡單,如果需要傳遞多個數據,可以自定義參數類型與數目

send=QTypeSignal()

slot=QTypeSlot()

#

print(’_____-把信號綁定到槽函數上_____’)

send.sendmsg.connect(slot.get)

三:使用裝飾器信號與槽

1、使用格式

@PyQt5.QtCore.pyqtSlot(參數)def on_發送者對象名稱_發射信號名稱(self,參數): pass

2、注意點,使用裝飾器必須定義兩個東西

QMetaObject.connectSlotsByName(self)

給需要綁定事件的定義一個id(self.btn.setObjectName(’名稱’))

3、按鈕的普通事件

...class Window(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle(’裝飾器信號與槽’) self.resize(500, 500) self.move(400, 200) self.btn = QPushButton(’按鈕’, self) self.init_ui() def init_ui(self): self.btn.clicked.connect(self.btn_hand) @staticmethod def btn_hand(): print(’使用connect點擊了按鈕’)...

4、使用裝飾器后的事件

...class Window(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle(’裝飾器信號與槽’) self.resize(500, 500) self.move(400, 200) self.btn = QPushButton(’按鈕’, self) self.init_ui() # 要在加載組件后使用 QMetaObject.connectSlotsByName(self) def init_ui(self): # 這個地方定義的名字直接在下面使用 self.btn.setObjectName(’btn’) @pyqtSlot() def on_btn_clicked(self): print(’使用裝飾器點擊了按鈕’)

本文主要講解了PyQt5信號與槽基礎使用方法與實例,更多關于PyQt5信號與槽的知識請查看下面的相關鏈接

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
肉色丝袜一区二区| 国产欧美日韩视频在线观看| 国产精品一二| 亚洲激情欧美| 亚洲国产欧美国产综合一区| 欧美午夜a级限制福利片| 欧美日韩福利| 欧美日韩一视频区二区| 欧美午夜久久| 午夜私人影院久久久久| 亚洲香蕉伊在人在线观| 午夜亚洲福利老司机| 免费成人av资源网| 久久精品二区亚洲w码| 六月丁香婷婷久久| 丝袜亚洲另类欧美| 蜜桃一区二区三区在线| 韩国一区二区三区| 成人精品免费看| 牛牛国产精品| 日一区二区三区| 国产欧美中文在线| 亚洲品质自拍视频| 性做久久久久久免费观看| 免费成人美女在线观看| 国产在线日韩欧美| 99re这里只有精品首页| 极品av少妇一区二区| 国产精品日韩高清| 欧美日韩午夜在线| 久久综合九色综合97_久久久| 国产伦精品一区二区三区照片91| 日韩有码一区二区三区| 国产欧美日韩另类一区| 亚洲精品国产视频| 久久99精品久久久久| 99久久综合国产精品| 99精品视频免费观看视频| 91福利小视频| www亚洲一区| 亚洲影视在线观看| 国精产品一区一区三区mba桃花| av高清不卡在线| 欧美在线首页| 日本不卡一区二区| 欧美一区二区三区播放老司机| 免费在线欧美黄色| 国产一区成人| 久久男女视频| 日韩不卡一区二区| 最近中文字幕一区二区三区| 亚洲国产综合91精品麻豆| 国产很黄免费观看久久| 亚洲小说区图片区| 六月婷婷色综合| 亚洲天堂成人在线观看| 免费亚洲电影在线| 欧美日韩hd| 欧美剧在线免费观看网站| 国产精品成人免费在线| 国产一区激情在线| 国产精品视频免费| 久久91精品国产91久久小草| 在线播放精品| 777久久久精品| 福利一区福利二区| 色呦呦一区二区三区| 国产精品网站一区| 久久网站热最新地址| 视频在线观看91| 国产综合激情| 欧美不卡一二三| 久久精品久久精品| 亚洲视频www| 欧美韩国一区二区| 国产精品 欧美精品| 久久午夜av| 一区二区三区四区蜜桃| 欧美一区网站| 精品少妇一区二区三区| 久久成人精品无人区| 亚洲在线成人| 亚洲黄色av一区| 国产精品播放| 久久精品视频网| 国产精品一区三区| 在线日韩av片| 视频一区二区三区在线| 亚洲国产第一| 国产精品国产自产拍高清av| 午夜精彩国产免费不卡不顿大片| 欧美一区二区福利在线| 国产精品自在在线| 欧美日韩日日摸| 免费看日韩a级影片| 性伦欧美刺激片在线观看| 亚洲欧美日本韩国| 亚洲午夜在线| 亚洲欧美日韩久久精品| 韩国一区二区三区在线观看| 日本一区二区电影| 欧美精品福利| 欧美国产欧美亚州国产日韩mv天天看完整| 岛国av在线一区| 欧美大片免费久久精品三p| 国产乱码精品一区二区三| 制服丝袜国产精品| 国产精品一线二线三线| 欧美一区永久视频免费观看| 日一区二区三区| 欧美无人高清视频在线观看| 伦理电影国产精品| 在线综合视频播放| 成人va在线观看| 一本色道久久综合亚洲精品不卡 | 91麻豆国产在线观看| 日韩欧美高清在线| 91麻豆精东视频| 成人欧美一区二区三区小说| 亚洲美女少妇无套啪啪呻吟| 欧美日韩一区二区三区四区五区 | 日本高清不卡一区| 国产一区二区伦理| 久久嫩草精品久久久久| 国内在线观看一区二区三区| 亚洲天堂成人在线观看| 日本乱人伦一区| 国产一二三精品| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品99久久久久久宅男| 久久久精品黄色| 国产欧美高清| 色老汉一区二区三区| 国产精品久久久久久久岛一牛影视 | 久久久99精品免费观看不卡| 亚洲激精日韩激精欧美精品| 日本亚洲一区二区| 欧美成人激情免费网| 黄色日韩在线| 蜜臀av在线播放一区二区三区| 日韩精品一区二区三区三区免费| 欧美深夜福利| 美女一区二区在线观看| 精品精品欲导航| 国产偷自视频区视频一区二区| 日韩电影在线看| 久久久久亚洲综合| 久久久久久婷| 97久久久精品综合88久久| 亚洲综合色区另类av| 欧美日韩爆操| 美国av一区二区| 中文字幕精品一区| 欧美日韩一区二区三区高清| 欧美成人一区二免费视频软件| 亚洲高清中文字幕| 久久久综合精品| 欧美三级中文字幕| 国产精品国产精品| 国产精品亚洲第一区在线暖暖韩国| 亚洲色图.com| 亚洲精品一区二区在线观看| 另类av一区二区| 欧美一区高清| 国产美女娇喘av呻吟久久| 一区二区三区成人| 久久夜色精品国产欧美乱极品| 在线亚洲欧美专区二区| 欧美特黄一级| 国产91在线|亚洲| 免费欧美在线视频| 一区二区三区美女视频| 久久青草欧美一区二区三区| 91久久免费观看| 国产一区二区三区的电影 | 国产乱人伦精品一区二区在线观看| 亚洲视频免费在线观看| 精品精品国产高清a毛片牛牛| 久久综合狠狠| 国产日产高清欧美一区二区三区| 成人黄色片在线观看| 美国一区二区三区在线播放| 亚洲成人黄色影院| 狼狼综合久久久久综合网| 尹人成人综合网| 91浏览器打开| 波波电影院一区二区三区| 久久er99热精品一区二区| 亚洲高清久久久| 91电影在线观看| 久久久久综合一区二区三区| 国产精品免费在线| 在线播放不卡| 国产精品www994| 国户精品久久久久久久久久久不卡| 99天天综合性| 成人h版在线观看| 粉嫩绯色av一区二区在线观看| 精品夜夜嗨av一区二区三区| 久久99精品国产.久久久久|