訊號傳參型別
pyqtSignal() #無引數訊號
pyqtSignal(int) # 一個引數(整數)的訊號
pyqtSignal([int],[str] # 一個引數(整數或者字串)過載版本的訊號
pyqtSignal(int,str) #二個引數(整數,字串)的訊號
pyqtSignal([int,int],[int,str]) #二個引數([整數,整數]或者[整數,字串])過載版本
#coding=utf-8 from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import time ''' 訊號傳參型別 pyqtSignal() #無引數訊號 pyqtSignal(int) # 一個引數(整數)的訊號 pyqtSignal([int],[str] # 一個引數(整數或者字串)過載版本的訊號 pyqtSignal(int,str) #二個引數(整數,字串)的訊號 pyqtSignal([int,int],[int,str]) #二個引數([整數,整數]或者[整數,字串])過載版本 ''' class Mythread(QThread): # 定義訊號,定義引數為str型別 breakSignal = pyqtSignal(str,list) def __init__(self, parent=None): super().__init__(parent) # 下面的初始化方法都可以,有的python版本不支援 # super(Mythread, self).__init__() def run(self): for i in range(2000000): # 發出訊號 print(12) a=[i,i 1] self.breakSignal.emit(str(i),a) # 讓程式休眠 time.sleep(0.5) if __name__ == '__main__': app = QApplication([]) dlg = QDialog() dlg.resize(400, 300) dlg.setWindowTitle("自定義按鈕測試") dlgLayout = QVBoxLayout() dlgLayout.setContentsMargins(40, 40, 40, 40) btn = QPushButton('測試按鈕') dlgLayout.addWidget(btn) dlgLayout.addStretch(40) dlg.setLayout(dlgLayout) dlg.show() def chuli(a,s): # dlg.setWindowTitle(s) btn.setText(a str(s[0]*10)) # 建立執行緒 thread = Mythread() # # 註冊訊號處理函式 thread.breakSignal.connect(chuli) # # 啟動執行緒 thread.start() dlg.exec_() app.exit()
写评论
很抱歉,必須登入網站才能發佈留言。