如何在 PySide 中强制重绘?

How can I force a repaint in PySide?

我认为 PySide 小部件存在重绘问题。我如何强制小部件(或整个 window/app)在方法中间重绘?

def on_button_clicked():

    window.resultTextEdit.setPlainText("Parsing file...")
    # indicate delay, this message should be visible while parsing
    # but in fact it never appears

    # can I force a repaint here?

    result = parse() # (takes a little while)

    window.resultTextEdit.setPlainText(result)
    # display the results once done

app = QApplication(sys.argv)
window = QtUiTools.QUiLoader().load("application.ui")
window.userButton.clicked.connect(on_button_clicked)
window.show()
sys.exit(app.exec_())

对于任何需要在事件中间重新绘制的小部件,您只需调用 widget.repaint()。请注意,UI 的其余部分在重绘期间没有响应(这对于一次性调用没问题,但如果您重复重绘则不行)。

(感谢梅尔指点我)