網站首頁 編程語言 正文
pyqtSignal的基本使用
下面包含了對pyqtSignal的基礎使用,包括多參數
因為較為簡單,就當作參考書吧~~
然后信號可以接收多個信號源哦~下面也有舉例 (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__()
# 確認PushButton設置
btn = QPushButton("無參信號")
btn.clicked.connect(self.buttonClicked)
btn1 = QPushButton("單參信號")
btn1.clicked.connect(self.buttonClicked1)
btn2 = QPushButton('雙參信號')
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("無參信號,傳來的信息")
def signalOne(self, arg1):
print("單參信號,傳來的信息:", arg1)
def signalTwo(self, arg1, arg2):
print("雙參信號,傳來的信息:", 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("我是單參信號傳來的")
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_())
關于pyqtSignal()作用
from PyQt5.QtCore import QObject , pyqtSignal
class CustSignal(QObject):
#聲明無參數的信號
signal1 = pyqtSignal()
#聲明帶一個int類型參數的信號
signal2 = pyqtSignal(int)
#聲明帶int和str類型參數的信號
signal3 = pyqtSignal(int,str)
#聲明帶一個列表類型參數的信號
signal4 = pyqtSignal(list)
#聲明帶一個字典類型參數的信號
signal5 = pyqtSignal(dict)
#聲明一個多重載版本的信號,包括帶int和str類型參數的信號和帶str類型參數的信號
signal6 = pyqtSignal([int,str], [str])
def __init__(self,parent=None):
super(CustSignal,self).__init__(parent)
#將信號連接到指定槽函數
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)
#發射信號
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()
運行結果:
原文鏈接:https://blog.csdn.net/weixin_40301728/article/details/109681368
相關推薦
- 2022-12-14 Android?MaterialAlertDialogBuilder修改按鈕屬性_Android
- 2022-10-25 在PyCharm中使用FMEObjects的操作步驟_python
- 2022-12-29 R語言中dnorm,pnorm,qnorm和rnorm的區別淺析_R語言
- 2022-09-15 Go位集合相關操作bitset庫安裝使用_Golang
- 2022-04-18 后端接口返回一個圖片地址,前端h5,pc瀏覽器,下載圖片文件,而不是預覽
- 2022-02-27 jwt Claims token 秘鑰稍有不同也能解析成功 signWith setSigningK
- 2022-11-08 Numpy安裝、升級與卸載的詳細圖文教程_python
- 2022-03-04 uniapp和原生app交互
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支