gpt4 book ai didi

python - PyQT 在调用其他函数之前强制更新 textEdit

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:26 27 4
gpt4 key购买 nike

我的问题涉及 PyQT5。我尝试创建一个带有按钮的对话框窗口,单击该按钮

  1. 更新 QTextEdit 字段的一些文本
  2. 调用一个函数(需要很长时间才能终止)

像这样:

class StartDialog(QtWidgets.QWidget, start_dialog_ui.Ui_Dialog):
def __init__(self, parent):
super(self.__class__, self).__init__()
self.setupUi(self)
self.OKButton.clicked.connect(self.start)

def start(self):
self.startDialogTextEdit.append("simulation running ...")
run_lengthy_function(self)

但是,当我运行我的 GUI 时,我注意到文本仅在冗长的函数终止后 更新,尽管 QTextEdit.append 在冗长的函数之前被调用.如何强制文本提前更新?

到目前为止我尝试过(但没有奏效)是让 Python 在触发冗长的函数调用之前等待一段时间,即

from time import sleep

class StartDialog(QtWidgets.QWidget, start_dialog_ui.Ui_Dialog):
def __init__(self, parent):
super(self.__class__, self).__init__()
self.setupUi(self)
self.OKButton.clicked.connect(self.start)

def start(self):
self.startDialogTextEdit.append("simulation running ...")
sleep(5)
run_lengthy_function(self)

最佳答案

重绘是在事件循环中调用的,所以整个线程休眠不会改变任何东西。

您可以通过以下方式手动调用重绘:

self.startDialogTextEdit.repaint()

或者调用静态方法:

QCoreApplication.processEvents()

内部也调用重绘

关于python - PyQT 在调用其他函数之前强制更新 textEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654327/

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