错误的地方,insertPlainText函数不会在底部添加文本到QTextEdit

时间:2019-06-13 17:19:12

标签: python python-3.x pyqt pyqt5 qtextedit

我正在为我的一个程序制作GUI(文本冒险)。 GUI很简单,因为它接受用户输入的命令(即往北走,打开抽屉等),然后将输入发送到另一个文件,然后将该文件的输出返回给QTextEdit(其功能是一个控制台,您可以在其中读取文本冒险中的所有动作和结果。这是控制台外观的一个简单示例:

你在城里。

>往北

你去了北方。现在您在其他位置

>开门

您打开了门。

在上面的示例中,用户正在输入命令,然后使用insertPlainText函数在控制台的底部打印该命令以及该代码的后续输出,并且前面的命令和输出在上方可见。

但是,有时用户的命令和输出会随机打印在QTextEdit底部的上方。我想知道这是代码中的错误还是错误,因为几乎总是将文本打印在正确的位置,但是有时它会随机打印不正确。有没有一种方法可以避免这种情况,或者强制insertPlainText函数直接在文本编辑的底部插入文本?它不是已经这样做了吗?

这是我在最小的可重现示例上的最佳尝试(我看过很多地方,找不到如何缩进此代码,但我认为这是每行所属的直截了当):

class OutputLayout(Qt.QHBoxLayout)
    def __init__(self): # I am leaving out the obvious statements that are in here

    self.console = Qt.QTextEdit()

    def update_console(self, command): #command is the users input

    self.console.insertPlainText(text_adventure_engine.get_output(command)) # text_adventure_engine is a seperate file with a function get_output that returns the proper statement to print to the console

每次用户输入新命令时,update_console函数就会生效。由于某些原因,插入控制台的文本有时会在错误的位置打印。有人知道为什么是这样吗?感谢您的帮助。

0 个答案:

没有答案