У меня есть два класса: один - это класс графического интерфейса пользователя, который устанавливает пользовательский интерфейс и интерфейс программы, а другой - последовательность запуска тестов и отображения страниц пользовательского интерфейса. В секвенсоре я инициализирую графический интерфейс, получаю данные из графического интерфейса и хочу перейти на страницу, пока выполняется другой код (например, страница «Выполнение теста»). Когда я вызываю код для изменения страницы графического интерфейса, по какой-то причине код пропускается сразу и запускает тесты, предварительно не убедившись, что новая страница графического интерфейса пользователя показана.
Я попытался добавить некоторые задержкив методе run_test, чтобы дать время для обновления графического интерфейса, но это не имеет никакого эффекта.
Тестовый интерфейс выглядит следующим образом:
class TestGUI(tk.Tk):
def __init__(self, sequencer):
..
self.show_page(MainPage)
..
def show_page(self, page):
frame = self.pages[page]
frame.tkraise()
Существуют подклассы, которые указывают, как каждая страницанастроен (например, MainPage, RunningPage и т. д.).
Секвенсор выглядит следующим образом:
def _start_sequencer(self, entry):
..
self.gui.show_page(RunningPage)
self.run_test()
..
Где метод run_test - это просто те тесты, которые пользователь может захотеть запустить (т. е. там, скорее всего, будут какие-то вызовы time.sleep () и некоторая трудоемкая инициализация оборудования и т. д.)
По неизвестным причинам я не могу заставить графический интерфейс отображать RunningPage, когда он долженперед началом выполнения метода run_test.
Есть мысли о том, почему и как я могу решить эту проблему?