我的问题涉及PyQT5。
我想要一个对话框窗口,其中有一个按钮,当被点击时:
- 更新
QTextEdit
字段的一些文本 - 调用一个需要很长时间才能终止的函数
类似于这样:
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()
按预期工作。 - Amos Egel