gpt4 book ai didi

python - PyQT相当于wx CallAfter?

转载 作者:行者123 更新时间:2023-12-01 04:11:01 24 4
gpt4 key购买 nike

我最近从 wxPython 切换到 PyQT,但找不到 CallAfter 的等效项。由于一些导入,我需要使用 pubsub ,并且使用 wx 我刚刚使用 CallAfter 发送消息 - 有没有办法在 PyQT 中执行类似的操作?基本上,我想用 pyQT 将一些东西注入(inject)到主循环中。

编辑更多信息:

在我的旧 GUI 中,使用 wxPython,我使用的是 python-openzwave,它使用旧的调度程序模块。我将捕获旧的调度程序信号并将它们转换为 pubsub 消息(为了便于使用)并使用 CallAfter 发送新消息,如下所示:

wx.CallAfter(pub.sendMessage, messagePack.signal, message = messagePack.message)

然后我能够通过捕获消息并直接处理 gui 元素来更新 GUI,因为它本质上将一些东西注入(inject)到主循环中。

现在,使用pyqt,没​​有callafter,所以,我有相同的系统设置,没有callafter,但是收到消息后必须发生的操作不能发生,因为它位于主循环的中间。

最佳答案

我能想到的最接近的是使用 QTimer.singleShot具有较短的超时,这将迫使其进入下一个事件循环。

def other_function(self):
print 'other'

def my_function(self):
print 'one'
QTimer.singleShot(1, self.other_function)
print 'two'

Qt 有事件循环的想法,它将检查是否有需要处理的事件,例如按钮单击,或者需要重绘小部件的一部分等。通常,会调用一个函数作为结果一个事件的。 QTimer.singleShot 会将您的函数调用粘贴在事件循环的下一个周期要处理的事件列表的末尾。

但我同意一些评论,您可能只需使用在另一个线程中运行的单独的 QObject 来处理 openzwave 事件并将消息重新分派(dispatch)为 Qt 信号,主线程可以监听并更新 GUI .

关于python - PyQT相当于wx CallAfter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34956113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com