像终端一样从下往上在QTextEdit中加载文本

0 投票
2 回答
699 浏览
提问于 2025-04-17 23:23

我想用pyqt4做一个像QTextEdit那样的终端,但我不知道该修改哪个属性,这样当一个进程输出文本时,文本应该是从底部开始显示,然后往上滚动。

如果能给我一些入门的建议,我会非常感激。

谢谢!

2 个回答

0

每次在 QTextEdit 中打印文本时,你需要重置光标的位置。

假设你有一个叫做 resultbox 的 QTextEdit 类成员。那你需要做的就是这样 -

def move_cursor_to_end(self):
    cursor = self.resultbox.textCursor()
    cursor.movePosition(QtGui.QTextCursor.End)
    self.resultbox.setTextCursor(cursor)

调用这个函数可以把文本光标移动到 QTextEdit 的末尾,这样下次你打印任何内容时,它就会出现在最后面。

所以在往 QTextEdit 打印内容时,你可以这样做 -

def print_to_textedit(self, text):
    self.resultbox.insertPlainText(text)
    self.move_cursor_to_end()

这样文本就会从底部开始,随着更多文本的加入而向上移动。

希望这正是你想要的。

1

我之前也试过类似的事情,主要是为了记录日志。这个过程很麻烦,而且当有很多行的时候速度会非常慢。

如果你预计在终端上会有很多行输出,建议你考虑写一个项目模型,并把它连接到一个视图上。

这样做有很多方法可以调整视图的外观,它可以让你从大量数据中只显示一小部分,而不会变得非常慢。同时,它也允许你快速在任何位置插入数据。

撰写回答