# -*- coding: utf-8 -*- import time import requests from PySide6.QtCore import (QThread, Signal, Slot, QSize) from PySide6.QtWidgets import (QApplication, QPushButton, QLabel, QVBoxLayout, QWidget) class WorkerThread(QThread): # 定义一个信号,用于在线程中发送数据给主线程 update_label = Signal(str) def run(self): while True: for i in range(5): time.sleep(2) # 模拟耗时操作 self.update_label.emit(f"{i + 1}") class MyThread(QThread): signal_tuple = Signal(tuple) def run(self): while True: for idx in range(1, 10): time.sleep(2) # 任务完成后发出信号 self.signal_tuple.emit((idx, '')) class MainWindow(QWidget): def __init__(self, parent=None): super().__init__(parent=parent) self.setup_ui() # self.button.clicked.connect(self.setup_thread) def setup_ui(self): self.setWindowTitle('demo') self.resize(QSize(250, 180)) # 创建一个垂直布局 layout = QVBoxLayout() # 创建一个标签 self.label = QLabel('This is a label => ') layout.addWidget(self.label) # 创建一个按钮 self.button = QPushButton('Send Request') layout.addWidget(self.button) # 将布局设置为主窗口的布局 self.setLayout(layout) # 显示窗口 self.show() def setup_thread(self): self.thread_ = MyThread() self.thread_.signal_tuple.connect(self.thread_finished) self.thread_.start() def send_request(self): return requests.get('https://www.csdn.net/').text[:15] @Slot(tuple) def thread_finished(self, item): self.label.setText('This is a label => ' + str(item)) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec()