import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QHBoxLayout,QLabel
from PyQt5.QtCore import pyqtSignal, QThread
import time
class ui(QWidget):
def __init__(self):
super().__init__()
wind=QWidget(self)
wind.setWindowTitle('小例子')
wind.resize(300,200)
layou=QHBoxLayout(self)
self.btn = QPushButton('开始线程',self)
self.btn2 = QPushButton('结束线程',self)
self.label=QLabel(self)
layou.addWidget(self.btn)
layou.addWidget(self.btn2)
layou.addWidget(self.label)
wind.setLayout(layou)
self.btn.clicked.connect(self.A)
self.btn2.clicked.connect(self.B)
self.btn2.setEnabled(False)
self.my_thread=thread()
self.my_thread.testsing.connect(self.labelsetText)
# self.my_thread.sing.connect(self.B)
self.my_thread.sing2.connect(self.B)
def labelsetText(self,text):
self.label.setText(text)
def A(self):
self.btn.setEnabled(False)
self.btn.setText('已被禁用')
self.my_thread.start()
self.btn2.setEnabled(True)
self.btn2.setText('结束线程')
def B(self):
self.my_thread.terminate()
self.btn.setEnabled(True)
self.btn.setText('开始线程')
self.btn2.setEnabled(False)
self.btn2.setText('已被禁用')
class thread(QThread):
testsing=pyqtSignal(str)
sing2 = pyqtSignal()
def __init__(self):
super().__init__()
def run(self):
for i in range(10):
time.sleep(1)
self.testsing.emit(str(i))
print(i)
self.sing2.emit()
if __name__ == '__main__':
app=QApplication(sys.argv)
ui=ui()
ui.show()
sys.exit(app.exec_())
pyqt5多线程更新UI小例子
最新推荐文章于 2025-06-06 16:39:34 发布
6547

被折叠的 条评论
为什么被折叠?



