python QThread 如何使用
时间: 2024-11-29 17:13:18 浏览: 41
Python中的`QThread`是PyQt库的一部分,用于处理GUI应用程序中的线程同步问题。它可以帮助你在主线程之外运行耗时操作,避免阻塞用户界面。以下是基本的使用步骤:
1. **导入模块**:
首先,你需要导入`QThread`和相关的信号槽机制,如`QObject`、`pyqtSignal` 和 `pyqtSlot`。
```python
from PyQt5.QtCore import QObject, pyqtSignal, QThread
```
2. **创建线程类**:
定义一个继承自`QObject`的新类,这个类通常包含你要在新线程上执行的任务,并且可以发出信号(`pyqtSignal`)来通知主线程结果。
```python
class WorkerThread(QObject):
finished = pyqtSignal() # 创建一个信号,当工作完成时触发
def run(self):
# 这里放置耗时任务
time.sleep(5)
print('Task completed')
self.finished.emit() # 发出信号表示任务结束
```
3. **启动线程**:
在主线程中创建`WorkerThread`实例,并通过`start()`方法开始执行。
```python
worker = WorkerThread()
worker.moveToThread(QThread()) # 将工作线程移到新的线程
worker.start() # 开始执行任务
```
4. **接收结果**:
在主线程上,你可以连接`finished`信号到一个槽函数来处理线程完成的结果,通常是在`mainWindow`这样的窗口对象上。
```python
worker.finished.connect(worker_thread_done) # 设置槽函数
def worker_thread_done():
print('Received result from worker thread')
```
阅读全文