MacOS PyQt5 QPlainTextEdit 控件 setPlainText 或者 appendPlainText后不能马上显示文本
我练习使用PyQt5 QPlainTextEdit 控件,通过点击QpushButton来set text 或者 append text,但是它们都不能马上显示出来,需要鼠标点击拖拽后才能显示,感觉是界面刷新或者PyQt5版本的问题。
我的使用环境是:
maxOS
python3.7.6
PyQt5 5.13.2
具体问题看下图:
程序启动后的界面
点击set 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上寻求帮助后,得到了解决的,感谢热心网友。在这里分享下,帮助遇到相同的问题的网友。
不清楚是什么原因造成的,有谁知道请告之一下。