порядок после () и mainl oop () - PullRequest
0 голосов
/ 17 апреля 2020

Существует проблема с обновлением экрана при добавлении контента в мой текстовый виджет в моем GUI.

Вот часть моего кода ...

    def recv_msg(): # Loop for getting and displaying messages
        global clientsocket
        try:
            Crecv = clientsocket.recv(1024).decode()
            Crecv = str(Crecv)
            print(f"Message Recv: \"{Crecv}\"")
            messages.configure(state = "normal")
            messages.insert(END, Crecv)
            messages.configure(state = "disabled")
            loop_state = 1 
            window.update_idletasks()
            window.update()
            window.after(100, recv_msg)
        except:
            print("error in recv_msg():")
            window.after(100, recv_msg)
        print("Loop Passed")

Эта функция отображает любые сообщения, и я использую window.after (100, recv_msg), чтобы превратить его в al oop. Но window.update () прерывает этот l oop. Если я поменяю местами эти две строки, окно не обновится (и программа перестанет отвечать).

Я искал исправление, и единственное, что я действительно мог найти, это изменить window.mainl oop () в window.update (). Я попробовал это, и программа потерпела крах.

Я также пытался чередовать их, пока не понял, как только window.mainl oop () будет вызван recv_msg () никогда не будет вызываться снова.

Любая помощь будет принята с благодарностью. Заранее спасибо!

ПРИМЕЧАНИЕ: я знаю, насколько неправильным является только этот раздел кода. Но это ранняя альфа-версия программы. Я буду переделывать каждую строку кода и стараться сделать его герметичным, но сейчас я просто хочу концепцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...