pyqt5子线程的函数完成之后执行主线程中的函数
时间: 2023-11-30 14:04:20 浏览: 164
要在子线程完成后执行主线程中的函数,可以使用 PyQt5 中的信号与槽机制。具体实现步骤如下:
1. 定义一个信号类,在其中声明一个信号函数,该函数没有参数。
```python
from PyQt5.QtCore import QObject, pyqtSignal
class Signal(QObject):
finished = pyqtSignal()
```
2. 在子线程中,当函数执行完成后,发出信号。
```python
class Worker(QThread):
def __init__(self):
super().__init__()
def run(self):
# 执行子线程中的函数
result = self.long_time_task()
# 发出信号
self.finished.emit()
def long_time_task(self):
# 子线程中的函数
pass
```
3. 在主线程中,连接信号与槽,槽函数就是要在子线程完成后执行的函数。
```python
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建子线程和信号对象
self.thread = Worker()
self.signal = Signal()
# 连接信号与槽
self.signal.finished.connect(self.on_finished)
def on_start(self):
# 启动子线程
self.thread.start()
def on_finished(self):
# 子线程完成后执行的函数
pass
```
这样,当子线程中的函数执行完成后,就会发出信号,主线程中的槽函数就会被执行。注意,信号和槽函数都是没有参数的。
阅读全文