Виджеты в Tkinter [Урок №3]

автор

В этой части обучения Tkinter мы расскажем о базовых виджетах. В рамках урока мы будем работать с виджетами: Checkbutton, Label, Scale и Listbox.

Виджеты – это базовые блоки для создания графического интерфейса программы. За годы развития программирования некоторые из виджетов стали стандартными во всех языках и на всех платформах.

Например, это виджеты кнопок, флажки или полоса прокрутки. Некоторые из виджетов могут иметь другие названия в Tkinter. Например, классические флажки (check box) называются check button. В Tkinter реализован небольшой набор виджетов, который покрывает базовые нужды программирования. Дополнительные виджеты могут быть созданы как пользовательские виджеты.

Checkbutton

Checkbutton – это виджет, который имеет два состояния: «включен» и «выключен». Состояние «включен» визуально символизируется соответствующей отметкой (Некоторые темы могут иметь разные визуальные отметки). Виджет используется для обозначения каких-либо логических свойств. Виджет Checkbutton имеет флажок и текстовый ярлык.



В нашем примере мы поместили флажок в окно. Использование этого флажка позволяет скрыть или отобразить название окна.

Мы создали BooleanVar объект. Данные объекты позволяют хранить логические значения виджетов в Tkinter.

Создается экземпляр Checkbutton. Объект, хранящий значение, соединяется с виджетом посредством параметра variable. Когда мы нажимаем на флажок, вызывается метод onClick(). Для этого также используется параметр command.

Изначально, название отображается в заголовке окна. Поэтому, изначально мы делаем флажок включенным с помощью метода select().

Внутри метода onClick() мы отображаем или скрываем заголовок окна, основываясь на значении переменной self.var.

checkbutton

Ярлыки

Виджет Label используется для того, чтобы отображать текст или изображения. С этим виджетом пользователи никак не могут взаимодействовать.

Чтобы запустить этот пример, необходимо установить модуль python-imaging-tk.

Наш пример показывает изображение в окне.

По умолчанию, виджет Label может отображать ограниченное количество форматов изображений. Чтобы отобразить JPG изображение, необходимо использовать PIL (Python Imaging Library модуль).

Мы создаем изображение из файла изображения в текущей рабочей директории. После этого мы создаем фото изображение из изображения.

Фотоизображению присваивается параметр image виджета ярлыка.

Чтобы не смешать изображение с разным мусором, необходимо сохранить ссылку на него.

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

Шкала

Scale – это виджет, который позволяет пользователю графически выбирать значение, перемещая определенный ползунок по ограниченной линии. В нашем примере выбранное значение ползунком будет отображено виджетом ярлыка в формате текста.

В нашем скрипте присутствует два виджета: scale и label. Значение из виджета шкалы отображается в виджете ярлыка.

Мы создаем виджет Scale. Также мы указываем нижнюю и верхнюю рамки значений. From – это регулярное ключевое слово в Python, поэтому необходимо прописывать символ подчеркивание (Underscope) после параметра. Когда мы двигаем ползунок по шкале, вызывается метод onScale().

Создаются держатель целого значения и виджет ярлык. Значение из держателя будет отображаться в виджете ярлыке.

Метод onScale() получает текущее выбранное значение из виджета шкалы как параметр. Значение сначала конвертируется в значение с плавающей точкой, после чего конвертируется в целое. В результате, значение передается держателю и отображается на виджете ярлыке.

scale

Списки

Виджет Listbox позволяет отображать список объектов. Он позволяет пользователю выбирать один или несколько объектов.

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

Это весь список актрис, которые будут показаны в списке.

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

Когда мы выбираем объект в списке, генерируется событие <>. Мы присваиваем метод onSelect() этому событию.

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

Мы получаем отправителя события – это наш виджет списка.

Мы узнаем индекс выбранного элемента при помощи метода curselection().

Фактическое значение извлекается при помощи метода get(), который получает индекс объекта.

В результате, ярлык обновляется.

listbox
В этой части обучения Tkinter мы рассказали о базовых виджетах.

Вам может быть интересно

Scroll Up