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 滚动条自动跟随的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt5 中获取滚动条拇指的大小/宽度?

datagridview 不显示滚动条怎么回事

如何在 PyQt5 Python 中更改表格小部件中滚动条的颜色

PyQt5——QSS

css代码怎样改变火狐浏览器中滚动条样式

css代码怎样改变火狐浏览器中滚动条样式