Python School
89K subscribers
2.14K photos
5 videos
537 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Создание своего первого графического интерфейса

Библиотека Tkinter предустановлена в Python в качестве стандартного модуля, поэтому нам не нужно устанавливать что-либо для ее использования.

Сначала импортируем Tkinter и создадим окно, в котором мы зададим его название.

mainloop - эта функция вызывает бесконечный цикл окна, поэтому окно будет ждать любого взаимодействия с пользователем, пока не будет закрыто.
Если вы забудете вызвать метод mainloop, для пользователя ничего не отобразится.

Label
Чтобы добавить текст в наш предыдущий пример, мы создадим lbl с помощью класса Label.
Затем мы установим позицию в окне с помощью метода grid. Опять же: если он не будет вызван, текст не будет отображаться!

#tkinter
Добавление виджета Button

Начнем с добавления кнопки в окно. Кнопка создается и добавляется в окно так же, как и метка.

Обратите внимание, что мы помещаем кнопку во второй столбец окна, что равно 1. Если вы забудете и поместите кнопку в том же столбце, который равен 0, он покажет только кнопку.

Реакция на нажатие кнопок
Для начала мы запишем функцию clicked(), которую нужно выполнить при нажатии кнопки.

Затем мы передадим аргументу command нашу функцию. Обратите внимание: мы пишем clicked, а не clicked() с круглыми скобками. Потому что мы не вызываем, а передаем функцию.

#tkinter
Настройка размера и шрифта текста

Вы можете задать шрифт текста и его размер. Также можно изменить стиль шрифта. Для этого передайте в аргумент font.

Обратите внимание, что параметр font может быть передан любому виджету. Для того, чтобы поменять его шрифт, он применяется не только к Label, но и к Button.

Изменение цвета текста и фона у Button

Вы можете поменять цвет текста кнопки или любого другого виджета, указывая аргумент fg.
Кроме того, вы можете поменять цвет фона любого виджета, используя свойство bg.

Заметьте, что в данном коде кнопка ничего не делает.

#tkinter
В предыдущих примерах GUI Python мы ознакомились со способами добавления простых виджетов, а теперь попробуем получить пользовательский ввод, используя класс Entry (текстовое поле Tkinter).

Вы можете получить текст ввода, используя метод get.

Если вы нажмете на кнопку — появится текст «Привет {name} » вместе с введенным текстом в виджете записи.

Каждый раз, когда мы запускаем код, нам нужно нажать на виджет ввода, чтобы настроить фокус на ввод текста, но как насчет автоматической настройки фокуса?
Здесь все очень просто, ведь все, что нам нужно сделать, — это вызвать метод focus.

Когда вы запустите свой код, вы заметите, что виджет ввода в фокусе, который дает возможность сразу написать текст.

#Tkinter
Добавление виджета Combobox

Чтобы добавить виджет поля с выпадающем списком, используйте класс Combobox.

Как видите с примера, мы добавляем элементы combobox, используя значения кортежа - tuple.

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

Чтобы получить выбранный элемент, вы можете использовать метод get

Не забывайте, что вы можете добавлять новые пункты к примеру по нажатию кнопки!

#tkinter
Добавление виджетов Radio

Чтобы добавить radio кнопку, используется класс RadioButton

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

Чтобы получить текущую выбранную radio кнопку или ее значение, вы можете передать параметр переменной и получить его значение.

Каждый раз, когда вы выбираете radio button, значение переменной будет изменено на значение.

#tkinter
Tkinter, всплывающее окно

Чтобы показать всплывающее окно с помощью Tkinter, используется класс messagebox.

В зависимости от того что нам нужно можно использовать один из следующих методов, все они принимают одинаковые аргументы, отличаются лишь внешним видом:

showinfo - вывести информацию;
showerror - вывести ошибку;
showwarning - вывести предупреждение.

Первый аргумент - заголовок, второй - текст

В примере, когда вы нажмете на кнопку появится информационное окно.

#tkinter
Добавление SpinBox

Для создания виджета спинбокса - выбор числа в диапазоне (используем к примеру для задания возраста) мы используем крем класс Spinbox, и передаем параметры from и to, чтобы указать диапазон номеров.
Кроме того, вы можете указать ширину виджета с помощью параметра width

Вы можете указать числа для Spinbox, вместо использования всего диапазона следующим образом:
spin = Spinbox(window, values=(2, 8, 11), width=5)
Виджет покажет только эти 3 числа: 2, 8 и 11.

Благодаря последнему можно создавать нужный промежуток через range()

#tkinter
Добавление виджета Progressbar

Чтобы создать данный виджет, используйте класс Progressbar. Получить его можно немного непривычным способом:
 tkinter.ttk import Progressbar
Инициализировать класс не составит никаких проблем
 = Progressbar(window, length=200)

Установите значение progressbar можно таким образом:
 = 70
Вы можете установить это значение на основе любого процесса или при выполнении задачи.

Изменение цвета Progressbar

Изменение цвета происходит немного сложнее, чем обычно. Сначала нужно создать стиль (импортировав из его из модуля ttk) и задать цвет фона, а затем настроить созданный стиль на Progressbar.

#tkinter
TKinter. Добавление панели меню

Для добавления панели меню, используйте класс Menu

Сначала мы создаем меню, затем добавляем наш первый пункт подменю. Можно добавить пункты в любое меню с помощью метода add_cascade(). Можно добавить столько пунктов меню, сколько захотите.

Теперь мы добавляем еще один пункт меню “Изменить” с разделителем меню. Вы можете заметить пунктирную линию в начале. Если вы нажмете на эту строку, она отобразит пункты меню в небольшом отдельном окне.

Можно отключить эту функцию, с помощью tearoff подобным образом:
 = Menu(menu, tearoff=0)

#tkinter
TKinter. Вкладки

Сначала с помощью класса Notebook создается элемент управления вкладкой. Потом создается вкладка через класс Frame.

Далее добавляйте эту вкладку в элемент управления вкладками. Запакуйте элемент управления вкладкой, чтобы он стал видимым в окне.

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

#tkinter