269 字
1 分钟
PyQt5 QTextEdit自动滚动到最底端

前言#

如何实现在编辑 QTextEdit 中文本后,自动滚动到最低端,即最后一行。

目前,我找下来一共有两种方法,一个是移动光标,另一个是移动滚动条,都能实现差不多的效果。

注意 PyQt 的版本,百度上有的教程我实际操作起来是缺参数的。

移动光标#

from PyQt5.QtWidgets import QTextEdit # 文本框
from PyQt5.QtGui import QTextCursor # 光标
myTextEdit = QTextEdit()
myTextEdit.setPlainText("你需要设置的文本")
# TODO: 在每次改变文本后, 添加如下代码
myTextEdit.moveCursor(QTextCursor.MoveOperation.End, QTextCursor.MoveMode.MoveAnchor) # 移动光标至文本末尾

def moveCursor(self, operation, mode) operation: QTextCursor.MoveOperation 移动操作(末尾、开头…) mode: QTextCursor.MoveMode 移动模式(MoveAnchor, KeepAnchor) 移动模式中,MoveAnchor 是直接移动光标,KeepAnchor 是类似选中的方法

移动滚动条#

from PyQt5.QtWidgets import QTextEdit # 文本框
from PyQt5.QtGui import QTextCursor # 光标
myTextEdit = QTextEdit()
myTextEdit.setPlainText("你需要设置的文本")
# TODO: 在每次改变文本后, 添加如下代码
myTextEdit.verticalScrollBar().setValue(myTextEdit.verticalScrollBar().maximum())

使用这种方法实际上是调用了 QTextEdit 中的 QScollBar 实例,并将它移动到末尾。

PyQt5 QTextEdit自动滚动到最底端
https://fuwari.vercel.app/posts/编程/qt/pyqt5-qtextedit自动滚动到最底端/
作者
Asuwee
发布于
2022-02-05
许可协议
CC BY-NC-SA 4.0