Графические виджеты
Уроки Открыть IDE
На главную
Виджеты • Урок 1

Кнопки и события

Как заставить кнопку что-то делать при нажатии

Создание кнопки (повторение)

Как мы уже знаем из прошлого урока, кнопка создаётся через объявление переменной типа gui.Button:

(попробуйте нажать — пока ничего интересного)
🖱️ Попробуйте нажать на кнопку. Пока что происходит большое и прекрасное ничего.

Кнопка создана, отображается, нажимается — но на нажатие ничего не происходит. Почему? Потому что мы не сказали программе, что именно должно случиться при клике.

Обработка нажатия: свойство on_click

Чтобы кнопка реагировала на нажатие, нужно присвоить её свойству on_click функцию. Эта функция будет вызываться каждый раз, когда пользователь нажимает на кнопку.

(работает! нажмите — текст изменится)
✨ Теперь при нажатии текст на кнопке меняется на «Кнопка нажата!».

Разберём код обработчика:

  • btn.on_click = void function() { ... } — мы присваиваем свойству on_click безымянную функцию.
  • void — означает, что функция ничего не возвращает (просто выполняет действия).
  • Внутри функции мы можем менять свойства самой кнопки (btn.text) или любых других виджетов.
💡 Важно: Функция-обработчик не вызывается вами напрямую. Она вызывается автоматически, когда пользователь нажимает на кнопку.

Влияние на другие виджеты

Самое интересное — обработчик может менять любые виджеты, не только ту кнопку, на которую нажали.

Вот пример с двумя кнопками и текстовой меткой. Каждая кнопка меняет текст метки «на себя»:

???
(нажмите на кнопки — текст метки изменится)
🏆 Левая кнопка пишет «Мой лейбл!», правая — «Нет, мой!». Обе кнопки управляют одним и тем же виджетом label.

Обратите внимание:

  • Переменная label объявлена до функций-обработчиков, чтобы они могли к ней обращаться.
  • Каждая кнопка имеет свой собственный обработчик.
  • Внутри обработчика можно обращаться к любым виджетам, которые были созданы ранее.