- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
QThread 有一个完成信号,我可以在线程完成时做一些事情(连接到一个方法/函数),但是我也想用 QRunnable 做这件事。有没有办法在完成后将 QRunnable 线程连接到方法/函数?
Q线程:
class HelloWorldTask(QThread):
def __init__(self):
QThread.__init__(self)
def run(self):
import time
time.sleep(3)
print ("Running thread \n")
time.sleep(3)
hello.finished.connect(check)
def check():
print('Thread Done')
输出:
运行线程
完成
QRunnable:
instance = QThreadPool.globalInstance()
class HelloWorldTask(QRunnable):
def __init__(self):
super().__init__(self)
def run(self):
import time
time.sleep(3)
print ("Running thread \n")
time.sleep(3)
hello = HelloWorldTask()
#hello.finished.connect(check) <-- how to connect to a method/function when finished.
instance.start(hello)
print(instance.waitForDone())
def check():
print('Thread Done')
期望的输出:
运行线程
线程完成
最佳答案
QRunnable 没有完成信号,因为它不是 QObject,因此一个可能的解决方案是创建另一个继承自 QObject 的类,以便它发出信号:
from PyQt5 import QtCore
class Signals(QtCore.QObject):
finished = QtCore.pyqtSignal()
class HelloWorldTask(QtCore.QRunnable):
def __init__(self):
super().__init__()
self.signal = Signals()
def run(self):
import time
time.sleep(3)
print("Running thread \n")
time.sleep(3)
self.signal.finished.emit()
def check():
print("Thread Done")
QtCore.QCoreApplication.quit()
if __name__ == "__main__":
import sys
app = QtCore.QCoreApplication(sys.argv)
hello = HelloWorldTask()
hello.signal.finished.connect(check)
QtCore.QThreadPool.globalInstance().start(hello)
sys.exit(app.exec_())
关于python - 完成后将 QRunnable 连接到函数/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811721/
是否可以中止 QRunnable 任务? 即使在文档中我也找不到任何方法。 非常感谢 最佳答案 不,您不能中止 QRunnable 任务。 在 Qt 中脏中止线程的唯一方法是通过 QThread::t
我正在尝试将指针 (ImageInput) 传递给 QRunnable::run() 方法。编译器编译,我没有得到任何错误。但是当我尝试在 run() 中使用变量时,程序崩溃了。有人知道错误在哪里吗?
QRunnable 在完成后被 QThreadPool 销毁。当我从它发出信号并尝试使用 sender() 从槽中获取 QRunnable 对象时,它为 NULL。 最小的例子: // class M
可以指出使用 QRunnable 作为 QtConcurrent 的替代方案的一些代码:我在 Qtdoc 中找不到任何 QRunnable 示例。 你有没有为同一个应用程序尝试过 QRunnable
在 QRunnable::run() 中发出信号是正确的做法吗?我需要通知我的 GUI 线程由 QRunnable 处理的图像已完成。我正在使用 QThreadPool/QRunnable 因为我需要
我正在编写一个路径跟踪器,并希望通过线程将其并行化。我有一个关于 QT 中多线程对象的设计问题,特别是关于 QRunnable 类。 在我下面的(伪代码)中,我有一个启动 PTRunnable 实例的
我正在尝试从 QRunnable 向我的主要 QObject 发送信号,但由于某种原因它没有接收到它们。 这样做正确吗? 这是一个小测试用例: import sys from PyQt4.QtGui
QRunnable 似乎没有sleep 方法。 如何在 QRunnable 中调用类似 QThread::sleep 的方法? 最佳答案 不要使用特定于平台的功能。 Qt 的最大优点是它非常容易移植。
我在 Qt 中有一些 I/O 代码已移至 QRunnable为了避免阻塞 UI 线程。这会用一些排队的插槽回调以指示其进度。 但是我最近看到了一些问题,当 QRunnable 的所有者时被销毁它不能删
我创建了简单的多线程服务器: 创建服务器 如果新连接创建新的 QThreadpool - QRunnable 在可运行中向客户端发送消息并等待请求 如果客户端被断开 runnable 写 qDebug
From a tutorial ,我已经看到信号和槽可用于从工作线程回调到主 GUI 线程,但我不确定如何使用信号和槽建立双向通信。以下是我正在使用的内容: class RespondedToWork
我遇到的是典型场景中的一个奇怪问题:QTcpServer 的方法 incomingConnection 在自定义类中被覆盖,并且任何接收到的连接都计划在 QThreadPool 上的单独线程中处理。
我正在尝试制作一个监控硬件的应用程序,我想使用 Qthreadpool 而不是为每个小部件设置一个线程,但我在连接信号以显示输出时遇到了问题。我也没有收到任何错误。 我的旧代码运行良好并使用 QThr
QThread 有一个完成信号,我可以在线程完成时做一些事情(连接到一个方法/函数),但是我也想用 QRunnable 做这件事。有没有办法在完成后将 QRunnable 线程连接到方法/函数? Q线
此代码段中出现此错误: void TCPConnectThread::run() { m_socket = new QTcpSocket(); m_socket->setSocketD
QThreads 和 QRunnable 有什么区别? 什么时候应该使用 QThread,什么时候使用 QRunnable? 最佳答案 QThread 可以运行事件循环,QRunnable 没有,所以
我知道一般的理论,线程,QRunnable 和 QThreadPool。它是如何适应的?我的意思是当 QRunnable 的一个实例被创建并分配给 ThreadPool 时,启动一个线程意味着什么?多
我正在用 C++ 编写 Qt 应用程序。我有一个在 QThreadPool 中运行的 QRunnable,它向主线程发送一个信号。问题是,连接不起作用:主线程从未接收到信号,即使我已经验证确实调用了执
我有一个在使用 Python3 的 PyQT4 应用程序中需要一段时间的过程。所以我一直在研究使用线程来加速它。数据可以很容易地被分解并循环处理。我正在使用自定义的 QRunnable,您可以在其中传
我正在使用 pyqt4。我有一个类 multi 继承自 QObject 和 QRunnable,如下所示: class DownloadTask(QObject, QRunnable): de
我是一名优秀的程序员,十分优秀!