Прекратить прослушивание ввода в теме - PullRequest
0 голосов
/ 18 октября 2019

В 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


Извините за любые ошибки, написал это на лету, так как мой код слишком велик для копирования

...