pyqt5 在线程QtCore.QThread内部终止线程及线程调用的函数,示例
时间: 2023-11-28 08:59:03 浏览: 99
代码如下:
```python
import sys
from PyQt5.QtCore import QThread, pyqtSignal
class MyThread(QThread):
# 自定义信号,用于线程结束后向主线程发送消息
thread_finished = pyqtSignal()
def __init__(self):
super().__init__()
def run(self):
# 线程执行的函数
while True:
if self.isInterruptionRequested():
# 判断是否收到终止信号
print('接收到终止信号,线程即将退出')
break
print('线程正在执行')
# 发送线程结束的信号
self.thread_finished.emit()
if __name__ == '__main__':
thread = MyThread()
thread.start()
# 模拟主线程在一定时间后发送终止信号
QThread.sleep(5)
thread.requestInterruption()
sys.exit()
```
在线程内部,可以通过调用`isInterruptionRequested()`方法来判断是否收到了终止信号。如果收到了终止信号,则可以通过`break`语句退出线程。在退出线程之前,可以通过自定义信号向主线程发送消息。在主线程中,可以通过调用`requestInterruption()`方法来发送终止信号。
阅读全文