Как сделать кнопку неактивной tkinter

Обновлено: 05.07.2024

Любой пользовательский интерфейс предназначен (в том числе, но не только) для того чтобы получать от пользователя информацию и команды.

Когда пользователь жмет на кнопку , или нажимает Ввод в текстовом поле — это событие (event) в программе и, возможно (но не обязательно), программа должна обработать его в одной из своих функций. Такие функции называют Обработчиками Событий .

И мы должны как-то уметь связывать событие ( bind ) (напр. нажатие на кнопку с функцией обработчиком).

События и связывания событий (event and bind) в Tkinter

В зависимости от виджета в Tkinter у него могут быть одни события, и не быть других. И есть два способа связывания событий с обработчиками:

  • Первый — это указанию виджету обработчика на стандартное для данного виджета событие (например на нажатие или клик по кнопке) через передачу callback в аргументе command этого виджета при создании виджета и перед размещением его в контейнере. При этом не у всех виджетов Tk есть такой аргумент. Например у виджета Button аргумент command есть, а у Label нет.
  • Второй способ — использование метода bind . Этот метод есть у всех виджетов унаследованных от класса Widget.

Также мы можем создавать свои события и назначать их на виджеты. Подробнее о всех этих возможностях в видео:

Виджет кнопки Tkinter в Python — очень простой и легкий в использовании виджет. Давайте посмотрим, как мы можем создавать кнопки и добавлять функции в наше приложение с графическим интерфейсом пользователя, используя несколько наглядных примеров.

Tkinter Button виджет

Виджет кнопки Tkinter

Этот виджет можно использовать для создания различных типов кнопок. У нас могут быть кнопки, содержащие не только текст, но и изображения.

Мы также можем заставить Tkinter Button вызывать определенную функцию, соответствующую функциональности кнопки, используя функцию обратного вызова.

Чтобы определить кнопку с определенным текстом и функцией обратного вызова, мы можем использовать следующее определение:

Здесь text — это текст на кнопке, а command относится к функции обратного вызова, которая вызывается при нажатии кнопки.

Давайте теперь создадим простое приложение, имеющее кнопку, которая при нажатии отображает окно предупреждения, которое сообщает нам, что на нее нажали.

Приведенный ниже фрагмент кода показывает это с комментариями, объясняющими каждую строку кода.

Теперь, запустив эту программу, вы получите следующий результат.

результат кнопки

Теперь, если вы хотите, чтобы изображение сопровождало вашу кнопку, чтобы сделать его немного более красивым, это возможно!

Просто добавьте еще один аргумент ключевого слова к tk.Button() , который называется image ! Это ImageTk.PhotoImage , экземпляр которого необходимо создать с помощью файла изображения.

Чтобы использовать ImageTk , мы должны импортировать его из модуля PIL . Сначала мы создаем изображение PIL , изменяем его размер, чтобы оно было достаточно маленьким, а затем формируем наше PhotoImage .

Теперь мы готовы сформировать объект фотоизображения.

Теперь, наконец, мы можем добавить его к нашей кнопке.

Однако вы должны быть осторожны, так как использование значка переопределит любой текст, который есть на кнопке.

Звезда активна
Звезда активна
Звезда активна
Звезда не активна
Звезда не активна

Для того, чтобы создать кнопку в Python 3 с обработкой нажатия мыши, понадобится использовать пакет или библиотеку tkinter. По сути tkinter package является стандартным интерфейсом Python для инструментария Tk GUI. Поэтому его можно использовать для создания кнопки. Для осваивания данного языка это будет интересная и полезная практика. Для начала следует импортировать данный пакет и протестировать был ли он установлен в используемой вами среде разработки.

Установить tkinter в Линуксе (Убунту) можно через терминал (вызов терминала: Alt-Ctrl-T) набрав в терминале sudo apt-get install python3-tk. Там же в терминале можно узнать и установленную версию Питона (python - v).

Протестировать и узнать установлен ли tkinter в среде разработки можно следующим образом:

Самый простой пример кнопки без обработчика нажатия мыши можно прописать так:

Ещё пример простой до безобразия кнопки в Python 3:

Создание кнопки в Python 3 при помощи tkinter

А вот интересный пример, в котором сразу три кнопки в одном фрейме (окне) при помощи библиотеки tkinter:

Импорт пакета как tk (сокращённо). Импорт библиотеки времени.

Создание окна, в котором будут отображаться кнопки. master — родительский виджет. pack () — упаковщик для размещения блоков один под другим. Создание виджета.

сommand прописывает обращение к методу нажатия мыши на кнопку. Упаковщик pack необходим для размещения блоков один над другим.

Создание второй кнопки Выхода из программы в том же методе создания виджета. Создание кнопки выхода из программы с удалением всех виджетов. Упаковщик для размещения блоков один под другим.

Обработка нажатия мыши. Создание кнопки с указанием времени на ней на данный момент. Обращение к методу при нажатии на кнопку, который выведет актуальное на данный момент время.

Метод нажатия кнопки. Создание метода для вывода информации после нажатия на кнопку.

Создание метода, который выведет актуальное на данный момент время.

Создание собственного окна.

Создание экземпляра класса.

Запуск главного цикла обработки событий.

А вот и полностью весь код примера трёх кнопок, который по кусочкам описан выше:

webfanat вконтакте
webfanat youtube

tkinter события

tkinter события

Всем привет. В первой статье по питону мы с вами уже использовали метод обработки события 'клик левой кнопки мыши', пример:

- событие, в нашем случае это - нажатие левой кнопки мыши.

- название функции, которая будет вызвана при обработке события

Заметьте что в функции которую мы вызываем через обработчик должен быть обязательно аргумент event(объект события).

Отмечу что обработчик событий через метод bind() мы можем вешать на любые элементы:

С общей концепцией работы обработчика мы разобрались теперь давайте перейдем к рассмотрению других событий. До этого момента мы рассмотрели клик левой кнопки мыши , теперь:

За прокрутку колесика мыши

За правую кнопку мыши:

Также есть двойной щелчок левой кнопки мыши:

здесь используется событие и как я думаю не трудно догадаться что если мы напишем то это будет двойной клик средней кнопки мыши и двойной клик правой кнопки мыши.

Еще мы можем отслеживать событие перемещения мыши:

За перемещение мыши отвечает событие .

Итак с событиями мыши мы более или менее разобрались теперь переходим к клавишам:

За обработку нажатия клавиши Enter отвечает событие .

Обработка нажатия пробела происходит

через событие . Как вы наверное уже поняли мы можем в качестве события указывать любую латинскую клавишу:

Для обработки всех клавиш мы можем воспользоваться событием

Заметьте что у нас выводятся только символьные и цифровые клавиши. Однако если мы просмотрим объект события event, то увидим что специальные клавиши также обрабатываются этим событием.

На этом дорогие друзья у меня на сегодня все.

Желаю удачи и успехов! Пока!

Оцените статью:

Статьи

Комментарии

Внимание. Комментарий теперь перед публикацией проходит модерацию

Галина

Статья никакая: какой print? Вы для кого его вообще пишете в графическом интерфейсе?

Вячеслав

Все бы так материал излагали. Спасибо большое!

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm

Читайте также: