从QRunnable发出信号

编程入门 行业动态 更新时间:2024-10-11 13:23:13
本文介绍了从QRunnable发出信号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试从QRunnable向我的主QObject发送信号,但是由于某种原因,它没有接收到它们.

I'm trying to send a signal from a QRunnable to my main QObject, but for some reason it isn't receiving them.

这是正确的方法吗?

这是一个小测试用例:

import sys from PyQt4.QtGui import QApplication from PyQt4.QtCore import QThreadPool, QObject, QRunnable, pyqtSignal class WorkerSignals(QObject): result = pyqtSignal(int) class Worker(QRunnable): def __init__(self, task): super(Worker, self).__init__() self.task = task self.signals = WorkerSignals() def run(self): print 'Sending', self.task self.signals.result.emit(self.task) class Tasks(QObject): def __init__(self): super(Tasks, self).__init__() self.pool = QThreadPool() self.pool.setMaxThreadCount(1) def process_result(self, task): print 'Receiving', task # This does not run def start(self): for task in range(10): worker = Worker(task) worker.signals.result.connect(self.process_result) self.pool.start(worker) self.pool.waitForDone() if __name__ == '__main__': app = QApplication(sys.argv) stuff = Tasks() stuff.start()

推荐答案

您需要致电app.exec_()

当我们调用应用程序的exec_()方法时,应用程序进入主循环. 主循环获取事件并将其发送到对象.信号和插槽用于对象之间的通信.发生特定事件时会发出信号.插槽可以是任何可调用的Python.当发出与其连接的信号时,将调用该插槽.

When we call the application's exec_() method, the application enters the main loop. The main loop fetches events and sends them to the objects. Signals and slots are used for communication between objects. A signal is emitted when a particular event occurs. A slot can be any Python callable. A slot is called when a signal connected to it is emitted.

检出 PyQt4中的事件和信号

更多推荐

从QRunnable发出信号

本文发布于:2023-10-09 05:30:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1474839.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:信号   QRunnable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!