gpt4 book ai didi

python - 从不在主脚本中的方法更新 Qt 界面中的文本

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:24 25 4
gpt4 key购买 nike

我想在我的主程序中调用一个方法 ExecuteM,其中在 while 中循环我在 Qt 界面中的文本(调用 result ),用 Qt creator 完成的将在每次迭代中更新。

class Machine():
def __init__(self, result):
self.result=result

def ExecuteM(self, Var1, Var2):
while Var1 != 'stop':
Var2 = Var2 + 3
self.result.setText(newResult())
sleep(0.5)

然后在我的主脚本中:

def main(self):
self.TM=Machine(self.result)
self.TM.ExecuteM(var1, var2)

但它不起作用文本不会在每次迭代时更新,为什么?

最佳答案

如果你在主线程中执行一个while-loop,它会阻塞gui。所有事件都将排队,直到 while 循环终止并且控制可以返回到事件循环。因此,您要么必须将阻塞的 while 循环移动到一个单独的线程中,要么定期强制事件循环处理未决事件。在您的示例中,应该可以像这样实现后者:

    def ExecuteM(self, Var1, Var2):
while Var1 != 'stop':
Var2 = Var2 + 3
self.result.setText(newResult())
QApplication.processEvents()
sleep(0.5)

但这只是一个短期解决方案。 use a worker thread and send a custom signal back to the main thread 可能会更好.

关于python - 从不在主脚本中的方法更新 Qt 界面中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41091588/

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