Принудительное использование Tkinter GUI для отображения страницы - PullRequest
0 голосов
/ 29 октября 2019

У меня есть два класса: один - это класс графического интерфейса пользователя, который устанавливает пользовательский интерфейс и интерфейс программы, а другой - последовательность запуска тестов и отображения страниц пользовательского интерфейса. В секвенсоре я инициализирую графический интерфейс, получаю данные из графического интерфейса и хочу перейти на страницу, пока выполняется другой код (например, страница «Выполнение теста»). Когда я вызываю код для изменения страницы графического интерфейса, по какой-то причине код пропускается сразу и запускает тесты, предварительно не убедившись, что новая страница графического интерфейса пользователя показана.

Я попытался добавить некоторые задержкив методе 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.

Есть мысли о том, почему и как я могу решить эту проблему?

...