成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_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国内精品久久久久久久
黄色av一区| 久久电影一区| 玖玖玖国产精品| 一区二区三区欧美在线观看| 国产精品xvideos88| 精品国产乱码久久久久久闺蜜| 精品一区二区免费| 色狠狠色狠狠综合| 午夜av电影一区| 久久久av水蜜桃| 午夜视频一区二区三区| 亚洲影视在线| 亚洲国产一区二区在线播放| 国产日韩欧美一区二区三区在线观看| 中文字幕日本乱码精品影院| 欧美 日韩 国产 一区| 日韩免费性生活视频播放| 国产69精品一区二区亚洲孕妇| 91精品国产一区二区| 国产精品亚洲一区二区三区在线| 在线91免费看| 高清国产一区二区| 精品国产1区二区| 粉嫩av一区二区三区粉嫩| 欧美大胆一级视频| 成人免费看片app下载| 精品久久免费看| 99久精品国产| 国产欧美日韩亚州综合| 欧美性天天影院| 中文字幕日韩一区| 亚洲精品国产日韩| 亚洲一区二区三区四区五区中文| 亚洲欧美卡通另类91av| 日韩精品国产精品| 欧美系列日韩一区| 国产盗摄视频一区二区三区| 精品黑人一区二区三区久久| 欧美精品1区| 亚洲美腿欧美偷拍| 国产精品永久| 美国十次综合导航| 日韩一二三区不卡| 91在线观看视频| 国产精品久久一卡二卡| 亚洲国产精品一区| 日韩av在线免费观看不卡| 在线不卡免费av| 成人免费视频一区| 国产喂奶挤奶一区二区三区| 极品av少妇一区二区| 亚洲一区国产视频| 在线视频国内自拍亚洲视频| 激情综合网av| 亚洲激情图片qvod| 激情综合五月婷婷| 精品一二三四区| 激情久久久久久久久久久久久久久久| 国产一区二三区| 国产日韩一区二区三区在线| 亚洲色图视频网站| 欧美一区日本一区韩国一区| 亚洲精品女人| 午夜宅男欧美| 91影视在线播放| 日日摸夜夜添夜夜添亚洲女人| 亚洲一区二区三区自拍| 天天av天天翘天天综合网色鬼国产| 麻豆免费精品视频| 成人一级黄色片| 欧美日韩综合另类| 久久亚洲欧美| 国产九区一区在线| 不卡一区中文字幕| 日本一区二区三区在线不卡| 极品少妇一区二区三区| 视频一区视频二区在线观看| 555夜色666亚洲国产免| 欧美日韩亚洲一区三区| 亚洲成av人片在线观看无码| 欧美老年两性高潮| 午夜欧美精品| 日韩高清不卡一区二区| 久久综合色婷婷| 国产精品嫩草99av在线| 国产美女娇喘av呻吟久久| 中文字幕第一区综合| 久久精品女人天堂| www.66久久| 亚洲国产欧美在线人成| 日韩欧美精品在线视频| 亚洲免费成人| 国产乱子伦视频一区二区三区| 中文字幕中文字幕一区| 欧美日韩黄色影视| 国内精品久久久久久久果冻传媒 | 中文字幕一区免费在线观看| 日本精品裸体写真集在线观看| 91在线免费视频观看| 亚洲国产aⅴ天堂久久| 欧美r级在线观看| 免费亚洲一区二区| 91一区二区三区在线播放| 午夜精品一区二区三区三上悠亚| 日韩一级片在线播放| 亚洲国产专区| 国产自产视频一区二区三区| 国产精品久久久久久久久久久免费看| 欧美午夜片在线观看| 亚洲性图久久| 国产一区二区美女| 一区二区三区在线不卡| 日韩欧美国产综合一区 | 岛国一区二区三区| 亚洲成a人在线观看| 久久夜色精品一区| 色婷婷久久久久swag精品| 欧美精品一区三区在线观看| 精品一区二区在线看| 亚洲综合免费观看高清在线观看| 久久综合狠狠综合久久综合88| 久久精品在线| 欧美特黄一级| 国产精品 日产精品 欧美精品| 亚洲午夜久久久| 日本一区二区三区在线不卡| 91精品国产高清一区二区三区| 久久国产福利| 国产一在线精品一区在线观看| 国产精品自拍一区| 亚洲不卡在线观看| 国产精品理论在线观看| 日韩精品综合一本久道在线视频| 麻豆久久精品| 亚洲高清免费| 91在线视频18| 国产不卡视频在线观看| 日本欧美加勒比视频| 亚洲精品国久久99热| 中文字幕av不卡| 久久婷婷久久一区二区三区| 欧美一区二区三区播放老司机| 一本色道久久加勒比精品| 99热这里只有成人精品国产| 欧美激情综合| 91丨九色丨蝌蚪丨老版| 精品亚洲porn| 奇米精品一区二区三区在线观看一| 一区二区三区四区视频精品免费| 国产精品麻豆视频| 久久精品夜色噜噜亚洲a∨| 制服丝袜亚洲播放| 欧美日韩免费视频| 在线观看一区不卡| 久久影院亚洲| 嫩草成人www欧美| 亚洲视频www| 国产日韩欧美一区二区| 亚洲精品专区| 亚洲福利一区| 亚洲精品麻豆| 亚洲激情另类| 一区二区视频欧美| 欧美日韩在线播放一区二区| 91在线精品秘密一区二区| 成人免费视频一区| 成人一区二区视频| 国产精品综合在线视频| 久久国产精品99久久久久久老狼| 午夜精品福利在线| 亚洲国产精品影院| 亚洲综合色婷婷| 亚洲国产日韩精品| 亚洲成人av资源| 亚洲午夜激情网页| 一区二区三区在线免费观看| 亚洲色图视频网站| 亚洲精品免费一二三区| 亚洲精品五月天| 一区二区三区不卡视频| 亚洲美女视频一区| 亚洲私人黄色宅男| 亚洲美女在线一区| 一区二区三区.www| 亚洲成av人片一区二区三区| 亚洲高清免费一级二级三级| 亚洲国产成人va在线观看天堂| 亚洲图片欧美色图| 午夜久久久久久久久| 青青国产91久久久久久| 蜜臀a∨国产成人精品| 美女网站色91| 国产一区在线观看麻豆| 国产在线精品一区二区三区不卡| 精品一区二区久久| 国产mv日韩mv欧美| 99精品视频在线观看| 欧美1级日本1级| 影音先锋在线一区| 亚洲女同在线|