Закрытие окна tkinter в другом потоке

Как я вижу программу: Окно Lobby горит, пока ожидается подключение другого игрока. Когда второй игрок подключится, окно закрывается и открывается игра.

Я создаю новый поток при инициализации окна tkinter. conn - это функция в которой происходит ожидание подключения к серверу (socket.accept()). После подключения вызывается функция game_start, в которой происходит уничтожение окна tkinter и открытие окна pygame в классе Game.

Вылетает ошибка, при уничтожении окна, связанная с закрытием не в основном потоке. Хотелось бы отследить завершение потока, и вызвать game_start из основного потока.

Важно: Game, conn, app.mainloop - блокируют поток, важно, чтобы этого не происходило

Хотя блокировка из-за mainloop необходима, пока не завершится второй поток

class Lobby:
    def __init__(self, name, conn, api):
        self.app = tk.Tk()
        self.app.geometry('500x500')
        self.app.title(f"Лобби ({name})")
        label = ttk.Label(self.app, text='Ожидаем')
        label.pack()
        Thread(target=lambda: conn(lambda: self.game_start(api))).start()

        self.app.mainloop()

    def game_start(self, api):
        print('lobby destroy')
        print('Запускаю game')
        from Game.Game import Game

        self.app.destroy()
        Game(api)

Это функция conn:

def __start(self, start):
self.conn, self.addr = self.accept()
        print('Соединение установлено(сервер)')
        start()

Ответы (0 шт):