Main_Ui 类中定义来自QtCore.QThread中的self.stop_flag的属性的python代码
时间: 2024-04-16 18:27:16 浏览: 142
下面是一个示例代码,展示了如何在 `Main_Ui` 类中定义来自 `QtCore.QThread` 的 `self.stop_flag` 属性:
```python
from PyQt5 import QtCore
class Main_Ui(QtCore.QThread):
def __init__(self):
super().__init__()
self.stop_flag = QtCore.QEvent(QtCore.QEvent.User)
def run(self):
while not self.stop_flag.isSet():
# 线程运行的任务
print("Thread is running...")
self.msleep(100) # 线程休眠100毫秒
def stop(self):
self.stop_flag.set() # 设置停止标记,通知线程停止运行
# 创建 Main_Ui 实例
ui = Main_Ui()
# 启动线程
ui.start()
# 停止线程
ui.stop()
```
在上述示例中,我们定义了一个 `Main_Ui` 类,继承自 `QtCore.QThread`。在构造函数 `__init__()` 中,我们使用 `QtCore.QEvent()` 创建了一个自定义事件对象作为停止标记 `self.stop_flag`。
在 `run()` 方法中,我们通过检查 `self.stop_flag.isSet()` 来判断是否收到停止信号。如果停止标记被设置为 `True`,线程将退出循环,从而主动停止运行。
要停止线程,调用 `stop()` 方法会设置停止标记,通知线程停止运行。这样可以确保线程在合适的时机安全地退出。
需要注意的是,由于使用了 `QtCore.QThread`,所以在 `run()` 方法中使用了 `self.msleep(100)` 来实现线程休眠,而不是 `time.sleep(0.1)`。这是因为在 `QtCore.QThread` 中,应该使用 `self.msleep()` 方法来进行线程休眠,以确保事件循环可以继续运行。
阅读全文