Создание кнопки (повторение)
Как мы уже знаем из прошлого урока, кнопка создаётся через объявление переменной типа gui.Button:
(попробуйте нажать — пока ничего интересного)
🖱️ Попробуйте нажать на кнопку. Пока что происходит большое и прекрасное ничего.
Кнопка создана, отображается, нажимается — но на нажатие ничего не происходит. Почему? Потому что мы не сказали программе, что именно должно случиться при клике.
Обработка нажатия: свойство on_click
Чтобы кнопка реагировала на нажатие, нужно присвоить её свойству on_click функцию. Эта функция будет вызываться каждый раз, когда пользователь нажимает на кнопку.
(работает! нажмите — текст изменится)
✨ Теперь при нажатии текст на кнопке меняется на «Кнопка нажата!».
Разберём код обработчика:
btn.on_click = void function() { ... }— мы присваиваем свойствуon_clickбезымянную функцию.void— означает, что функция ничего не возвращает (просто выполняет действия).- Внутри функции мы можем менять свойства самой кнопки (
btn.text) или любых других виджетов.
💡 Важно: Функция-обработчик не вызывается вами напрямую. Она вызывается автоматически, когда пользователь нажимает на кнопку.
Влияние на другие виджеты
Самое интересное — обработчик может менять любые виджеты, не только ту кнопку, на которую нажали.
Вот пример с двумя кнопками и текстовой меткой. Каждая кнопка меняет текст метки «на себя»:
???
(нажмите на кнопки — текст метки изменится)
🏆 Левая кнопка пишет «Мой лейбл!», правая — «Нет, мой!». Обе кнопки управляют одним и тем же виджетом
label.
Обратите внимание:
- Переменная
labelобъявлена до функций-обработчиков, чтобы они могли к ней обращаться. - Каждая кнопка имеет свой собственный обработчик.
- Внутри обработчика можно обращаться к любым виджетам, которые были созданы ранее.