像终端一样从下往上在QTextEdit中加载文本
我想用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
我之前也试过类似的事情,主要是为了记录日志。这个过程很麻烦,而且当有很多行的时候速度会非常慢。
如果你预计在终端上会有很多行输出,建议你考虑写一个项目模型,并把它连接到一个视图上。
这样做有很多方法可以调整视图的外观,它可以让你从大量数据中只显示一小部分,而不会变得非常慢。同时,它也允许你快速在任何位置插入数据。