【发布时间】:2012-08-11 03:55:52
【问题描述】:
如何自动滚动滚动区域?例如,当有新的更新而不是滚动区域的视图保持不变时,我想用新的文本往下走。把它想象成一个 CMD 控制台,当你输入一个命令时,它会自动滚动输出。
【问题讨论】:
如何自动滚动滚动区域?例如,当有新的更新而不是滚动区域的视图保持不变时,我想用新的文本往下走。把它想象成一个 CMD 控制台,当你输入一个命令时,它会自动滚动输出。
【问题讨论】:
我只是想回应另一个答案,但我只是不知道在分配的空间中表达它的最佳方式。
QScrollArea 是设计自定义 PyQt 小部件时非常有用的小部件 - 我经常使用它们。诸如推出小部件、卡片小部件之类的东西,任何您可以显示多个需要滚动的子小部件的东西都可能是一个非常有用的实用程序。我不同意 QScrollArea 本身没有多大用处的想法。
QTextEdit 的答案解决了开发人员面临的问题 - 但只是因为它发生了问题,所以问题确实与此有关。如果您尝试滚动文本编辑,请使用该答案。
但是,如果您正在寻找实际问题的答案并遇到此线程,则向下滚动 QScrollArea 的方法是实际修改滚动条的值。
area = QScrollArea(parent)
vbar = area.verticalScrollBar()
vbar.setValue(vbar.maximum())
如果你想滚动到特定区域或任何东西(比如实现 ensureCursorVisible),那么你想在区域的小部件上获取你想要滚动到的位置,计算出它的高度百分比,然后应用它垂直滚动条的值。 (伪代码)
【讨论】:
QScrollBar 已经有函数 ensureVisible 和 ensureWidgetVisible 可以垂直和水平滚动到特定点或子窗口小部件,因此无需重新实现它们。
使用QTextEdit.moveCursor 设置要滚动到的位置,然后使用QTextEdit.ensureCursorVisible 滚动到该位置:
textedit.moveCursor(QtGui.QTextCursor.End)
textedit.ensureCursorVisible()
【讨论】:
QTextEdit 相关——毕竟QScrollArea 本身并没有多大用处。