關(guān)于pyqtSignal的基本使用
pyqtSignal的基本使用
下面包含了對(duì)pyqtSignal的基礎(chǔ)使用,包括多參數(shù)
因?yàn)檩^為簡(jiǎn)單,就當(dāng)作參考書(shū)吧~~
然后信號(hào)可以接收多個(gè)信號(hào)源哦~下面也有舉例 (mousePressEvent 和 buttonClicked2)
import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QMainWindow, QHBoxLayout from PyQt5.QtCore import Qt, pyqtSignal class CMainWindow(QMainWindow): signalTest = pyqtSignal() signalTest1 = pyqtSignal(str) signalTest2 = pyqtSignal(float, float) def __init__(self): super().__init__() # 確認(rèn)PushButton設(shè)置 btn = QPushButton("無(wú)參信號(hào)") btn.clicked.connect(self.buttonClicked) btn1 = QPushButton("單參信號(hào)") btn1.clicked.connect(self.buttonClicked1) btn2 = QPushButton('雙參信號(hào)') btn2.clicked.connect(self.buttonClicked2) hBox = QHBoxLayout() hBox.addStretch(1) hBox.addWidget(btn) hBox.addWidget(btn1) hBox.addWidget(btn2) widget = QWidget() self.setCentralWidget(widget) widget.setLayout(hBox) self.signalTest.connect(self.signalNone) self.signalTest1.connect(self.signalOne) self.signalTest2.connect(self.signalTwo) self.setWindowTitle('pysignal的使用') self.show() def signalNone(self): print("無(wú)參信號(hào),傳來(lái)的信息") def signalOne(self, arg1): print("單參信號(hào),傳來(lái)的信息:", arg1) def signalTwo(self, arg1, arg2): print("雙參信號(hào),傳來(lái)的信息:", arg1, arg2) def mousePressEvent(self, event): self.signalTest2.emit(event.pos().x(), event.pos().y()) def buttonClicked(self): self.signalTest.emit() def buttonClicked1(self): self.signalTest1.emit("我是單參信號(hào)傳來(lái)的") def buttonClicked2(self): self.signalTest2.emit(0, 0) def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: self.close() if __name__ == '__main__': app = QApplication(sys.argv) MainWindow = CMainWindow() sys.exit(app.exec_())
關(guān)于pyqtSignal()作用
from PyQt5.QtCore import QObject , pyqtSignal class CustSignal(QObject): #聲明無(wú)參數(shù)的信號(hào) signal1 = pyqtSignal() #聲明帶一個(gè)int類型參數(shù)的信號(hào) signal2 = pyqtSignal(int) #聲明帶int和str類型參數(shù)的信號(hào) signal3 = pyqtSignal(int,str) #聲明帶一個(gè)列表類型參數(shù)的信號(hào) signal4 = pyqtSignal(list) #聲明帶一個(gè)字典類型參數(shù)的信號(hào) signal5 = pyqtSignal(dict) #聲明一個(gè)多重載版本的信號(hào),包括帶int和str類型參數(shù)的信號(hào)和帶str類型參數(shù)的信號(hào) signal6 = pyqtSignal([int,str], [str]) def __init__(self,parent=None): super(CustSignal,self).__init__(parent) #將信號(hào)連接到指定槽函數(shù) self.signal1.connect(self.signalCall1) self.signal2.connect(self.signalCall2) self.signal3.connect(self.signalCall3) self.signal4.connect(self.signalCall4) self.signal5.connect(self.signalCall5) self.signal6[int,str].connect(self.signalCall6) self.signal6[str].connect(self.signalCall6OverLoad) #發(fā)射信號(hào) self.signal1.emit() self.signal2.emit(1) self.signal3.emit(1,"text") self.signal4.emit([1,2,3,4]) self.signal5.emit({"name":"tao","age":"25"}) self.signal6[int,str].emit(1,"text") self.signal6[str].emit("text") def signalCall1(self): print("signal1 emit") def signalCall2(self,val): print("signal2 emit,value:",val) def signalCall3(self,val,text): print("signal3 emit,value:",val,text) def signalCall4(self,val): print("signal4 emit,value:",val) def signalCall5(self,val): print("signal5 emit,value:",val) def signalCall6(self,val,text): print("signal6 emit,value:",val,text) def signalCall6OverLoad(self,val): print("signal6 overload emit,value:",val) if __name__ == '__main__': custSignal = CustSignal() 運(yùn)行結(jié)果:
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?Web開(kāi)發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹
這篇文章主要為大家介紹了Python?Web開(kāi)發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12pip 錯(cuò)誤unused-command-line-argument-hard-error-in-future解決辦法
這篇文章主要介紹了Python包管理器pip安裝軟件時(shí)出現(xiàn)unused-command-line-argument-hard-error-in-future錯(cuò)誤的解決辦法,需要的朋友可以參考下2014-06-06python編程項(xiàng)目中線上問(wèn)題排查與解決
因?yàn)闃I(yè)務(wù)上的設(shè)計(jì)存在問(wèn)題,導(dǎo)致數(shù)據(jù)庫(kù)表總是被鎖,而且是不定期的鎖定,導(dǎo)致服務(wù)器運(yùn)行異常,今天就來(lái)跟大家說(shuō)說(shuō)該如何避免這種問(wèn)題2021-11-11Python的ORM框架SQLAlchemy入門(mén)教程
SQLAlchemy 是python 操作數(shù)據(jù)庫(kù)的一個(gè)庫(kù)。能夠進(jìn)行 orm 映射,SQLAlchemy“采用簡(jiǎn)單的Python語(yǔ)言,為高效和高性能的數(shù)據(jù)庫(kù)訪問(wèn)設(shè)計(jì),實(shí)現(xiàn)了完整的企業(yè)級(jí)持久模型”2014-04-04Python語(yǔ)音合成的項(xiàng)目實(shí)戰(zhàn)(PyQt5+pyttsx3)
本文主要介紹了Python語(yǔ)音合成的項(xiàng)目實(shí)戰(zhàn)(PyQt5+pyttsx3),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮
這篇文章主要介紹了在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python遞歸打印某個(gè)目錄的內(nèi)容(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇python遞歸打印某個(gè)目錄的內(nèi)容(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08