pyside2手动停止QRunnable的实例,通过按钮是新
时间: 2023-05-14 22:04:22 浏览: 236
建立一个信号-槽连接,将按钮的clicked信号连接到QRunnable的cancel槽函数上,这样当按钮被点击时,QRunnable的cancel函数就会被调用,从而停止QRunnable的实例。以下是示例代码:
```python
from PySide2.QtCore import QRunnable, QObject, Signal, Slot
class MyRunnable(QRunnable):
def __init__(self):
super().__init__()
def run(self):
# do some work here
pass
class MyWidget(QObject):
def __init__(self):
super().__init__()
self.runnable = MyRunnable()
self.runnable.setAutoDelete(True)
@Slot()
def start(self):
# start the runnable
pass
@Slot()
def stop(self):
self.runnable.cancel()
```
在上面的代码中,我们创建了一个MyRunnable类,它继承自QRunnable,并实现了run函数。我们还创建了一个MyWidget类,它包含了一个MyRunnable实例,并提供了start和stop槽函数。当start槽函数被调用时,我们可以通过QThreadPool来启动MyRunnable实例的运行。当stop槽函数被调用时,我们调用MyRunnable的cancel函数来停止它的运行。
注意,我们在MyRunnable的构造函数中调用了setAutoDelete(True),这样当MyRunnable的run函数执行完毕后,它会自动被删除,从而避免了内存泄漏的问题。
阅读全文