pyQt5 滚动条自动跟随
Posted
技术标签:
【中文标题】pyQt5 滚动条自动跟随【英文标题】:pyQt5 scrollbar auto follow 【发布时间】:2019-09-30 09:29:23 【问题描述】:当 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吗?
【问题讨论】:
请提供minimal reproducible example 【参考方案1】:好吧,所以我在一个安静的地方稍微考虑了一下,结果如下:
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)
需要注意的部分是在将数据附加到文本区域之前确定滚动条是否处于最大/结束位置。滚动条也需要显式设置,否则会自动滚动到末尾。
【讨论】:
以上是关于pyQt5 滚动条自动跟随的主要内容,如果未能解决你的问题,请参考以下文章