python - pyQt5 滚动条自动跟随
问题描述
当 y 位置不在末尾时,我似乎无法让 pyqt5 中的滚动条自动跟随和不自动跟随。
我试过这个:
ccursor=self.textCursor()
sbar=self.verticalScrollBar()
# get the max value
csbarval=float(sbar.value())
maxsbarval=float(sbar.maximum())
print("sbar value:{}".format(csbarval))
print("sbar max:{}".format(maxsbarval))
self.append(data)
if (float(maxsbarval) > 0.0) and (csbarval/maxsbarval > 0.98):
ccursor.movePosition(QtGui.QTextCursor.End)
那里有可以自动执行此操作的api吗?
解决方案
是的,所以我在一个安静的地方稍微考虑了一下,结果如下:
class TEdit(QtWidgets.QTextEdit):
def scrollbarBehaviour(self,data):
scrollbar=self.verticalScrollBar()
current_pos=scrollbar.value()
current_max=scrollbar.maximum()
at_bottom_of_text=(current_pos>=current_max -4)
self.append(data)
if at_bottom_of_text:
scrollbar.setValue(scrollbar.maximum())
else:
scrollbar.setValue(current_pos)
要注意的部分是在将数据附加到文本区域之前确定滚动条是否处于最大/结束位置。滚动条也需要明确设置,否则它会自动滚动到最后。
推荐阅读
- python - 如何在 Python 中计算两个二维数组之间的相互元素?
- jquery - 如何切换显示/隐藏单个标签
- python-3.x - 代码(键盘记录器)转换为 .exe,pyinstaller 无法正常工作
- python - 仅测量一些状态空间变量时,卡尔曼滤波器中的 H(观察)矩阵
- java - for循环的回文问题
- python - 如何在 ImageAi 中禁用检测框
- javascript - 我已经设法找到一种方法来使用每个方法来获取幻灯片的文本,但是如何让它显示我的罐头产品而不是文本?
- python - 在类中处理预设选项的最佳方法
- mysql - 提高 mariaDB 查询的 sql 代码性能
- javascript - 快速路线仅在第二次尝试后有效