我正在为我的一个程序制作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函数就会生效。由于某些原因,插入控制台的文本有时会在错误的位置打印。有人知道为什么是这样吗?感谢您的帮助。