Как исправить графический глюк в PyQt, где текст, напечатанный в QTextEdit, появляется в середине, а не внизу? - PullRequest
0 голосов
/ 30 мая 2019

Я сделал графический интерфейс для своего текстового движка приключений, используя PyQt5. Пользователь создает команду, которая сначала отправляется самому текстовому движку приключений (отдельный файл из графического интерфейса). Затем файл текстового движка приключений возвращает вывод, который должен быть напечатан на консоли, в файл GUI. Этот файл GUI имеет код, который печатает этот вывод в QTextEdit внутри окна, созданного GUI. По какой-то причине выходные данные будут в основном печататься в нижней части QTextEdit, как я хочу. Однако иногда новый вывод не печатается в нижней части TextEdit, а вместо этого печатает чуть выше предыдущего оператора print в TextEdit. Это глюк с PyQt или я могу с этим что-то сделать?

Вот пример моего кода:

class Window(Qt.QWidget): 
    def __init__(self, name):
        """
        <name>: Name of the window
        """

        super().__init__()

        self.name = name
        self.init_UI()

    def init_UI(self):
        """
        This function creates the entire user interface

        The output layout variable just holds the layout with the QTextEdit in it
        """

        self.output_layout.print_to_console(txt.get_start_description())
        self.output_layout.update_display()

    def print_to_console(self, text):
        """
        Simple command that prints any given text to the console
        """

        self.console.insertPlainText(text)

    def update_console(self, command):
        """
        Prints the output from the text adventure engine to the console through the
        <print_to_console> function
        """

        self.print_to_console(txt.run_text_adventure_engine(command))

Проблема здесь в том, что функция print_to_console почти всегда выводит оператор return в нижнюю часть QTextEdit, но иногда она печатается чуть выше дна и все перестает работать должным образом.

...