NO IMAGE

訊號傳參型別
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()