pyqt5如何实现多线程 代码示例
时间: 2023-06-01 21:08:10 浏览: 200
以下是一个使用 PyQT5 实现多线程的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class Worker(QThread):
finished = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
# 在这里实现多线程的代码逻辑
self.finished.emit()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("开始任务", self)
self.button.clicked.connect(self.start_task)
self.worker = Worker()
self.worker.finished.connect(self.task_finished)
def start_task(self):
self.button.setEnabled(False)
self.worker.start()
def task_finished(self):
self.button.setEnabled(True)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这个示例代码中,我们创建了一个 `Worker` 类,并继承自 `QThread`,这个类用于执行我们想要在后台进行的任务。在这个类中,我们实现需要执行的任务逻辑,并在完成任务后发送 `finished` 信号。
在 `MainWindow` 类中,我们创建了一个按钮,并将其连接到了 `start_task` 方法上。当用户点击这个按钮时,我们调用 `start_task` 方法,这个方法会使用 `setEnabled` 方法来禁用按钮,并启动 `worker` 实例,开始执行任务。
最后,我们在 `task_finished` 方法中启用按钮,来表示任务已经完成。
在实际使用中,你可以将 `Worker` 类和 `MainWindow` 类中的实现替换成你需要的逻辑。
阅读全文