pyside2简单的多线程写法代码示例
时间: 2023-11-17 09:08:13 浏览: 114
非常感谢您的提问,我将为您解答。
以下是一个简单的使用 PySide2 实现多线程的代码示例:
```python
from PySide2.QtCore import QThread, Signal
from PySide2.QtWidgets import QApplication, QPushButton, QLabel, QHBoxLayout, QVBoxLayout, QWidget
import time
class Worker(QThread):
finished = Signal()
progress = Signal(int)
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
for i in range(1, 101):
time.sleep(0.1)
self.progress.emit(i)
self.finished.emit()
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.worker = Worker()
self.button = QPushButton("Start")
self.label = QLabel("0%")
self.layout = QHBoxLayout()
self.layout.addWidget(self.button)
self.layout.addWidget(self.label)
self.setLayout(self.layout)
self.button.clicked.connect(self.start_thread)
self.worker.progress.connect(self.update_progress)
self.worker.finished.connect(self.thread_finished)
def start_thread(self):
self.worker.start()
def update_progress(self, value):
self.label.setText("{}%".format(value))
def thread_finished(self):
self.label.setText("Thread finished")
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这个示例使用了 PySide2 的 QThread 类来实现多线程,同时使用了 Signal 来在主线程与子线程之间传递消息。在这个示例中,按钮被点击后会启动一个名为 Worker 的子线程,在子线程中会每隔 0.1 秒更新一次进度条,同时通过 Signal 将进度值传回给主线程更新界面。当子线程完成时,也会通过 Signal 将消息传回主线程,界面上的进度条也会显示出 "Thread finished"。
希望这个示例对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文