PyQt5随笔:QTextEdit、QTextBrowser添加的文字超出视图后,滑动条自动移至最底部,显示最新文本解决
1.前言
QTextEdit/QTextBrowser设置文本的简单函数:setPlainText()
,setText()
这两个函数是我们初学PyQt5接触的。但都是后一次输入内容覆盖前一次的内容。和我们设想的多次输入,全部都显示的不一样。这就要学习其他设置文本函数了。
有两个函数可以实现我们的设想,append()
,insertPlainText()
搭配一定函数。
2.方法一:通过append()
函数
append()
是QTextEdit/QTextBrowser添加的文字超出视图后,滑动条自动移至最底部,显示最新文本,完美符合我们的设想。
从 append 的单词意思(添加
)就可以可以知道append()
是在文本后面再添加文本。即实现了连续输入内容全部显示。
测试代码:
def show_text(self):
a = '*'
for i in range(1,50):
text = '第' + str(i) + '次输入内容' + a * i + '\n'
self.textEdit.append(text)
在点击开始显示
后显示49条语句如下图:
他的滑动条就是在底部的,显示最新的输出文本,很符合我们的使用习惯。
![image-20200727111159232](https://gitee.com/MGzhou/zhoupic/raw/master/img/image-20200727111159232.png)
3. 方法二:通过insertPlainText()
搭配一定函数
虽然insertPlainText()
显示多次输入文本时,滑动条是在顶部的。
但通过insertPlainText()
搭配一定函数也可以实现滑动条始终在底部,实现显示最新输出文本。同时,append()
搭配一定函数也可以实现滑动条始终在顶部。这样可以实现更加复杂的程序设计。
def show_text(self):
a = '*'
for i in range(1,50):
text = '第' + str(i) + '次输入内容' + a * i + '\n'
self.textEdit.insertPlainText(text)
self.textEdit.moveCursor(QTextCursor.End) # Start -> 位于顶部,
# self.textEdit.verticalScrollBar().setValue(self.textEdit.verticalScrollBar().maximum()) # minimun() -> 位于顶部
有两种函数开始和insertPlainText()
搭配,一是self.textEdit.moveCursor(QTextCursor.End)
,把光标置于底部
二是self.textEdit.verticalScrollBar().setValue(self.textEdit.verticalScrollBar().maximum())
,直接把滑动条始终最大值,即底部
结果:
![image-20200727111159232](https://gitee.com/MGzhou/zhoupic/raw/master/img/image-20200727111159232.png)
。
。
。
。