pyqt给textbowser赋值后有内容取无法显示,如何解决?

今天用pyqt去给textbowser赋值后,却无法显示,试过刷新界面和repaint()都没有什么用处。
并且在逻辑代码内部直接使用这个命令的话,它是可以直接显示的,但是在外面去调用它就不能显示(但是输出该文本框内容却已经有了内容,就是不能显示)。

img

img

【以下回答由 GPT 生成】

解决方案

如果在正常的逻辑代码内部使用 textBrowser.setText() 方法可以正常显示内容,但是在外部调用该方法却不能显示,可能是因为在外部调用时没有触发界面的刷新。

可以尝试使用Qt的 QApplication.processEvents() 方法手动触发界面刷新,以确保文本内容能够显示。

下面是一个示例代码:

from PyQt5.QtWidgets import QApplication, QMainWindow, QTextBrowser
from PyQt5.QtCore import QCoreApplication

def set_text(content):
    textBrowser.setText(content)
    QCoreApplication.processEvents()

if __name__ == '__main__':
    app = QApplication([])

    mainWindow = QMainWindow()
    textBrowser = QTextBrowser(mainWindow)
    mainWindow.setCentralWidget(textBrowser)

    set_text('Hello, world!')

    mainWindow.show()
    app.exec()

这个示例代码中,先创建一个窗口和一个文本浏览器,并将文本浏览器设置为窗口的中央部件。然后使用 set_text() 方法设置文本,该方法内部会调用 QCoreApplication.processEvents() 方法来手动触发界面刷新。

请确保你的代码中已经包含了 app.exec() 语句,它是启动Qt应用程序的地方。

如果问题仍然存在,请提供你的pyqt版本、操作系统和其他相关信息,以便进一步分析。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^