MacOS PyQt5 QPlainTextEdit 控件 setPlainText 或者 appendPlainText后不能马上显示文本

MacOS PyQt5 QPlainTextEdit 控件 setPlainText 或者 appendPlainText后不能马上显示文本

我练习使用PyQt5 QPlainTextEdit 控件,通过点击QpushButton来set text 或者 append text,但是它们都不能马上显示出来,需要鼠标点击拖拽后才能显示,感觉是界面刷新或者PyQt5版本的问题。
我的使用环境是:
maxOS
python3.7.6
PyQt5 5.13.2

具体问题看下图:

程序启动后的界面
启动程序后的界面
点击set text按钮后,可以看出只显示了一小部分文本
点击set text按钮后,可以看出文本显示了一小部分
点击append text按钮后,没有变化。
点击append text按钮后,可以看出文本没有显示出来
拖拽鼠标刷新界面后可以显示完整文本
用鼠标点击拖拽后,才显示出来(可能是刷新的屏幕)
下面是我的完整代码:


from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPlainTextEdit, QPushButton
import sys


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.InitWindow()

    def InitWindow(self):
        self.setWindowTitle("PyQt5 PlainTextEdit")
        self.setGeometry(400, 300, 400, 300)

        self.plainText = QPlainTextEdit()
        self.plainText.setPlaceholderText("This is some text for our plaintextedit")

        self.btn = QPushButton('set text')
        self.btn.clicked.connect(self.setText)

        self.btn2 = QPushButton('append text')
        self.btn2.clicked.connect(self.appendText)

        vbox = QVBoxLayout()
        vbox.addWidget(self.plainText)
        vbox.addWidget(self.btn)
        vbox.addWidget(self.btn2)

        self.setLayout(vbox)

    def setText(self):
        print("set text button click")
        self.plainText.setPlainText('This is set text')

    def appendText(self):
        print("append text button click")
        self.plainText.appendPlainText('This is append text')


if __name__ == '__main__':
    App = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(App.exec())

解决办法

方法1:

添加下面语句(不过感觉比较麻烦)

self.plainText.repaint()

方法2(推荐):

更换PyQt5的版本,使用PyQt5 5.9.2版本

pip3 install PyQt5==5.9.2

在stackoverflow上寻求帮助后,得到了解决的,感谢热心网友。在这里分享下,帮助遇到相同的问题的网友。

不清楚是什么原因造成的,有谁知道请告之一下。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值