pyside2,通过按钮实现手动停止QRunnable的实例
时间: 2023-05-14 08:04:24 浏览: 150
Python中PyQt5/PySide2的按钮控件使用实例
可以通过以下代码实现:
```python
from PySide2.QtCore import QRunnable, QObject, Signal, Slot
from PySide2.QtWidgets import QApplication, QPushButton
import sys
class MyRunnable(QRunnable):
def __init__(self):
super().__init__()
def run(self):
print("Running...")
class MyWidget(QObject):
def __init__(self):
super().__init__()
self.runnable = MyRunnable()
self.threadpool = QThreadPool()
self.button = QPushButton("Stop")
self.button.clicked.connect(self.stop)
self.button.show()
self.threadpool.start(self.runnable)
@Slot()
def stop(self):
self.threadpool.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
sys.exit(app.exec_())
```
这个代码创建了一个 `MyRunnable` 类,它继承自 `QRunnable`,并实现了 `run` 方法。然后创建了一个 `MyWidget` 类,它继承自 `QObject`,并创建了一个 `MyRunnable` 实例和一个 `QThreadPool` 实例。在 `MyWidget` 的构造函数中,创建了一个 `QPushButton` 实例,并将其连接到 `stop` 槽函数。最后,通过 `threadpool.start` 方法启动了 `MyRunnable` 实例的运行。
当点击按钮时,会调用 `stop` 槽函数,该函数调用了 `threadpool.clear` 方法,从而停止了 `MyRunnable` 实例的运行。
阅读全文