【问题标题】:pyQt5 scrollbar auto followpyQt5 滚动条自动跟随
【发布时间】: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吗?

【问题讨论】:

标签: python linux pyqt pyqt5


【解决方案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)

需要注意的部分是在将数据附加到文本区域之前确定滚动条是否处于最大/结束位置。滚动条也需要显式设置,否则会自动滚动到末尾。

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2018-08-07
    • 2015-05-13
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多