В Python у меня есть основная программа, которая в основном является консольным классом gui. Его основной метод - это запущенный поток, который сохраняет экран с напечатанными параметрами и ждет, пока пользователь не введет выбор.
У класса gui есть другой инициализированный объект, который имеет свои собственные запущенные потоки. Один из потоков в этом другом объекте в основном требует, чтобы основной поток графического интерфейса пользователя переключался в другой режим / останов, но, поскольку он всегда «останавливается» на любом входе (), он никогда не переключится.
Так что естьКстати, поскольку у меня есть доступ к потоку графического интерфейса из другого объекта, отправить пустой поток ввода в поток графического интерфейса, чтобы он перебрал input ()?
Пример: (не фактический код)
from threading import Thread
class Gui:
def __init__(self):
self.mainthread = Thread(target=self.console_loop, daemon=True)
self.server = Server(self.mainthread)
self.mainthread.start()
self.mainthread.join()
def console_loop(self):
while True:
if some_terminating_condition:
break
while self.server.guiloop:
"""
.
. various code
.
"""
a = input()
if a == "Some input":
self.server.guiloop = False
self.server.do_stuff()
while not self.server.guiloop:
"""
More code
"""
class Server:
def __init__(self, guithread):
self.guiloop = True
self.gui_thread = guithread
def do_stuff(self):
self.guiloop = False
"""
Code to stop gui waiting for input <-- What I need
"""
# Arbitrary code
Извините за любые ошибки, написал это на лету, так как мой код слишком велик для копирования