欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例-創(chuàng)新互聯(lián)

這篇文章主要介紹了python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供豐城網(wǎng)站建設(shè)、豐城做網(wǎng)站、豐城網(wǎng)站設(shè)計、豐城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、豐城企業(yè)網(wǎng)站模板建站服務(wù),十多年豐城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。信號與槽有三種使用方法

第一種:內(nèi)置信號與槽的使用

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

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

一: 內(nèi)置信號與槽的使用

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

import sys
from PyQt5.QtWidgets import QMessageBox,QPushButton,QApplication,QWidget
app=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庫圖形界面開發(fā)之PyQt5信號與槽的使用示例python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例

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

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

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

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

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

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

python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例

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

第一步:生成一個信號

    #定義一個信號

    # sendmsg = pyqtSignal(object)

    #todo 優(yōu)化 多個參數(shù)傳遞

    sendmsg=pyqtSignal(str,str)

第二步:將信號與槽函數(shù)連接起來

print('_____-把信號綁定到槽函數(shù)上_____')

    send.sendmsg.connect(slot.get)

第三步:槽函數(shù)接受數(shù)據(jù)

 def get( self,msg1,msg2 ):

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

第四步:發(fā)射信號的實現(xiàn)

 self.sendmsg.emit('第一參數(shù)','第二個參數(shù)')

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

    send=QTypeSignal()

    slot=QTypeSlot()

    #

    print('_____-把信號綁定到槽函數(shù)上_____')

    send.sendmsg.connect(slot.get)

三:使用裝飾器信號與槽

1、使用格式

@PyQt5.QtCore.pyqtSlot(參數(shù))
def on_發(fā)送者對象名稱_發(fā)射信號名稱(self,參數(shù)):
 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('使用裝飾器點擊了按鈕')

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

網(wǎng)站名稱:python中GUI庫圖形界面開發(fā)之PyQt5信號與槽的使用示例-創(chuàng)新互聯(lián)
當(dāng)前URL:http://aaarwkj.com/article34/deocse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信公眾號動態(tài)網(wǎng)站、面包屑導(dǎo)航、標(biāo)簽優(yōu)化全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国产午夜亚洲精品福利| 久草尤物视频在线观看| 亚洲综合偷拍欧美一区色| 亚洲黄色av网址在线观看| 同为人妻一区二区三区| 亚洲成熟中老妇女视频| 成人高清乱码一区二区三区| 国产成人精品免费视频大| 韩日av一区二区三区| 美女爽到高潮久久久| 亚洲午夜一区二区不卡| 欧美日韩在线观看黄色| 日本中文字幕免费一区| 日韩x级av免费在线观看| 国产精品国产精品三级在线观看| 亚洲精品黄色在线观看| 91精品日日躁夜夜躁欧美| 国产成人原创免费观看| 88国产精品久久久久久| 极品丝袜美腿一区二区| 亚洲男女内射在线视频| 亚洲成年人黄色小说网站| 91老熟女露脸大合集| 亚洲午夜福利天堂社区| 国产在线成年人免费观看| 亚洲国产日韩精品av| 一区二区三区不卡中文字幕| 正在播放老肥熟妇露脸| 亚洲一区乱码精品中文| 欧美激情另类综合国内| 久久精品国产亚洲av波多| 18禁黄网站禁片免费视频| 亚洲欧美半夜激情一区二区| 久久精品一品二品三品| 午夜夫妻生活视频在线观看| 亚洲国产日韩精品av| 欧美+亚洲+精品+三区| 韩国电视剧大全免费国语观看 | 在线激情av中文字幕| 欧美日韩国产综合下一页| 国产三级国产精品国产专播|