Глава 16 · Создаём классные приложения с Tkinter

От терминала к GUI: событийная модель

Главный интеллектуальный переход этой главы: управление больше не течёт одной сплошной линией.

Терминал: последовательное выполнение

Терминальная программа выполняется предсказуемо, строка за строкой — управление всегда у самой программы:

Шаг 1print(...)Шаг 2input(...)Шаг 3следующая строка
Терминал: программа сама решает, когда и что делать дальше.

GUI: событийно-ориентированное выполнение

Оконное приложение строит интерфейс один раз, а затем ждёт события — и на каждое реагирует отдельным, заранее зарегистрированным кусочком кода:

инициализация интерфейса
переход в цикл событий
mainloop()
пользователь нажал кнопку
событие: клик
вызывается связанная функция
callback выполняется
callback вернулся
снова ожидание
Управление не остаётся у одной сплошной последовательности кода — оно переходит между обработчиками.

Источники событий

Откуда берутся события
Пользователь
клик мышью
ввод текста
действие с окном
Система
перерисовка
изменение размера окна
Программа
таймер / after() — раздел 16.22

Событие, callback, command — не синонимы

ТерминЧто это
Событие (event)то, что произошло — клик, ввод, таймер
Callbackфункция/вызываемый объект, зарегистрированный заранее для вызова позже
commandодин из способов Tkinter связать callback с конкретным виджетом

Регистрация callback — это ещё не его выполнение:

registraciya_vs_vypolnenie.py
log = []

def on_click():
    log.append("clicked")

registered = on_click   # регистрация: callback запомнен, но НЕ вызван
print(log)              # []

registered()            # диспетчеризация: callback выполняется именно сейчас
print(log)              # ['clicked']
Это прямая связь с главой 13
Функция как объект, который можно передать и вызвать позже — ровно то же самое «функция без скобок», о котором шла речь в разделе 16.2 про command. Событийная модель Tkinter целиком построена на этой идее.
Практика: регистрация и диспетчеризация callback
Проверяется без tkinter — чистой логикой на функциях-объектах
Открыть практику →