使用pyside6实现一个简单的线程池连接,并带有ui窗口展示
时间: 2023-05-11 14:01:53 浏览: 342
可以使用QThreadPool类来实现一个简单的线程池连接,同时使用QRunnable类来定义每个任务。以下是一个示例代码:
```python
from PySide6.QtCore import QObject, QRunnable, QThreadPool, Signal
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel
import time
class Worker(QRunnable):
def __init__(self, num):
super().__init__()
self.num = num
def run(self):
print(f"Task {self.num} started")
time.sleep(2)
print(f"Task {self.num} finished")
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("线程池连接示例")
self.setGeometry(100, 100, 300, 200)
self.threadpool = QThreadPool()
self.threadpool.setMaxThreadCount(2)
self.label = QLabel(self)
self.label.setGeometry(50, 50, 200, 30)
self.button = QPushButton("开始任务", self)
self.button.setGeometry(50, 100, 200, 30)
self.button.clicked.connect(self.start_tasks)
def start_tasks(self):
for i in range(5):
worker = Worker(i)
self.threadpool.start(worker)
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们创建了一个Worker类,它继承自QRunnable类,并重写了run方法来定义任务的具体操作。在MainWindow类中,我们创建了一个QThreadPool对象,并设置最大线程数为2。当用户点击“开始任务”按钮时,我们创建了5个Worker对象,并将它们添加到线程池中执行。同时,我们还创建了一个QLabel对象来展示任务的执行情况。
注意,这个示例只是一个简单的线程池连接示例,并没有涉及到UI窗口的具体实现。如果你需要在UI窗口中展示线程池的执行情况,可以在Worker类中添加信号,并在MainWindow类中连接这些信号来更新UI界面。
阅读全文