Как проверить обратный вызов метки Tkinter - PullRequest
0 голосов
/ 29 сентября 2018

Backgournd

Я пытаюсь научиться использовать Tkinter.Для этого я создал небольшое приложение, и я пытаюсь создать модульный тест, используя Pytest.

Часть, которую я пытаюсь проверить

Есть часть, которая создает метку иустанавливает для него тайм-аут, как только этот тайм-аут достигает, метка уничтожается, но я вижу, что обратный вызов для уничтожения никогда не вызывается

Определение обратного вызова

Этот параметр большего метода

        self.labels = deque()
        myLabel.after(timeout, myLabel.destroy)
        self.labels.appendleft(myLabel)

Модульный тест

class MockedClass(myTkinterApp):
    def __init__(self, timeout):
        self.label_timeout = label_timeout
        self.tk = Tk()
        self.labels = deque()

def test_timeout_reached_label_destroyed():
    obj = MockedClass(label_timeout=1)
    time.sleep(2)
    assert obj.labels[0].winfo_exists() is False

Я вижу, что обратный вызов никогда не вызывается.Чего мне не хватает?

1 Ответ

0 голосов
/ 30 сентября 2018

Для обратного вызова tkinter должен обработать события в очереди событий.Это основная работа mainloop.Без существования mainloop вы можете запросить, чтобы tkinter обработал все события, вызвав метод update корневого окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...