# 建議所有的界面更新動作都放在主線程中,否則textEdit控件可能會出現程序崩潰的問題
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import Signal, QObject
from threading import Thread
# 定義信號源
class Mysignals(QObject):
# 定義一個信號
text_print = Signal(str)
class Stat:
def __init__(self):
self.ui = QUiLoader().load('ui/test.ui')
self.ui.button.clicked.connect(self.handleCalc)
self.ms = Mysignals()
# 監聽自定義信號
self.ms.text_print.connect(self.update_ui)
def update_ui(self, str1):
self.ui.textedit.setPlainText(str1)
def handleCalc(self):
def download():
info = ''
for i in range(5):
info += f'正在下載-----{i}\n'
# 發射自定義信號
self.ms.text_print.emit(info)
sleep(1)
t1 = Thread(target=download)
t1.start()
app = QApplication()
stat = Stat()
stat.ui.show()
app.exec_()