Привет всем! Долго, очень долго доходили руки до написания этого материала. Сегодня мы разберемся с Tkinter — что это с примерами на русском. Попробуем создать небольшой интерфейс, ну и вообще… Поехали!
Сразу скажу, что рассказывать о крутости библиотеки — не буду. Она крутая, входит в комплект установщика Python, и позволяет создавать интерфейсы. Основная цель материала — эдакая шпаргалка по работе с Tkinter — что это с примерами 🙂
1. Создание окна на Tkinter:
-
from tkinter import * #Подключили библиотеку
-
-
window = Tk()
-
window.title('Заголовок окна') #Обозначили заголовок окна
-
window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)
Если все сделано правильно — у нас появится нечто вроде:
UPD: а еще можно обозначить цвет фона окна. Выглядит этот код следующим образом:
-
window.configure(background = '#949494')
И да — можно использовать следующую конструкцию, которая включает в себя как размер окна, так и цвет его фона:
-
window.configure(width = 100, height = 100, background = '#000000') #Тут у меня вообще аналогия с HTML возникла :)
А вот еще интересный вариант:
-
window.geometry('450x200+100+100') #Где первый параметр - ширина, а второй - высота, а третий и четвертый параметр, указанные через плюс - местонахождение создаваемого окна с координатами от левого верхнего угла ;)
2. Добавления метки в окне на Tkinter:
Давайте добавим в созданное нами окно виджет метки. Для этого в код, созданный ранее добавим вызов виджета метки с названием, и подключим сетку. В полном виде код будет выглядеть следующим образом:
-
from tkinter import * #Подключили библиотеку
-
-
window = Tk()
-
window.title('Заголовок окна') #Обозначили заголовок окна
-
label_widget = Label(window, text='Текст метки') #Создали виджет метки с текстом
-
label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
-
window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)
Опять же — если все сделано правильно — у нас откроется окно следующего вида:
3. Установка размера шрифта в окне Tkinter:
Ок, виджет метки мы добавили, а что делать, если размер шрифта «по-умолчанию» нас не устраивает? Нужно этот размер изменить. Для этого используем конструкцию в виде:
-
label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48))
где в целом — все полностью соответствует коду виджета метки, только добавляются параметры шрифта — его название, и размер. В полном виде код будет выглядеть так:
-
from tkinter import * #Подключили библиотеку
-
-
window = Tk()
-
window.title('Заголовок окна') #Обозначили заголовок окна
-
label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
-
label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
-
window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)
А само окно в этом виде будет выглядеть так:
4. И кстати, раз мы теперь умеем устанавливать размер шрифта — почему бы сразу не разобраться с установкой размера окна? Делается это очень просто:
-
window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
Кстати! Если у вас есть цель сделать окно фиксированного размера, и отключить возможность изменения его размера — используйте:
window.resizable(0, 0)
— в этом случае у пользователя не будет никакой возможности корректировки размера созданного окна 🙂
В полном виде код будет выглядеть так:
-
from tkinter import * #Подключили библиотеку
-
-
window = Tk()
-
window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
-
window.title('Заголовок окна') #Обозначили заголовок окна
-
label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
-
label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
-
window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)
В запущенном виде наше окно приобретает следующий вид:
5. А теперь давайте разберемся с вопросом: как добавить кнопку в Tkinter? Механизм создания кнопки сходен с созданием виджета метки. Конструкция выглядит следующим образом:
-
button = Button(window, text='Нажми меня!') #Создали кнопку, обозначили текст на кнопке
-
button.grid(column=1, row=0) #Добавили описание - где эта кнопка должна быть
В полном виде код будет выглядеть так:
-
from tkinter import * #Подключили библиотеку
-
-
window = Tk()
-
window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
-
window.title('Заголовок окна') #Обозначили заголовок окна
-
label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
-
label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
-
button = Button(window, text='Нажми меня!') #Создали кнопку, обозначили текст на кнопке
-
button.grid(column=1, row=0) #Добавили описание - где эта кнопка должна быть
-
-
window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)
В рабочем виде, если все сделано верно — созданное нами окно выглядит следующим образом:
Кстати, для примера давайте чуть скорректируем размер шрифта на кнопке — ну так, именно для тренировки (учиться-то нужно, правда?):
-
button = Button(window, text='Нажми меня!', font=('Arial Bold', 48)) #Как видите - алгоритм работы со шрифтом полностью идентичен тому, что мы тестировали на виджете метки. Но это так - отступление :)
UPD: а еще можно скорректировать размер кнопки, задав не только размер шрифта, но и отступление от краев кнопки. Выглядит это следующим образом:
-
button = Button(window, text='Нажми меня!', font=('Arial Bold', 12), width=15)
и в рабочем виде кнопка приобретает следующий вид:
6. В этом пункте мы узнаем, как задавать кнопке параметры цвета самой кнопки, и цвета текста. Для этого используем:
-
button = Button(window, text='Нажми меня!', bg="orange", fg="red")
Думаю, каких-то особых пояснений не нужно — bg — цвет самой кнопки, fg — цвет букв на кнопке 🙂
7. А теперь, зная, как создавать и украшать кнопки — давайте добавим реакцию на клик. Для этого используем конструкцию:
-
button = Button(window, text='Нажми меня!', bg="orange", fg="red", command=clicked)
Как видно из кода выше — мы создаем кнопку, прописываем ее внешний вид и текст на самой кнопке, а потом указываем, какую функцию нам нужно вызвать после нажатия кнопки. В нашем случае — эта функция clicked
Так давайте создадим функцию, которая нужным образом отработает после того, как эту функцию вызовет нажатие кнопки:
-
def clicked():
-
label_widget.configure(text='Кнопка была нажата!')
Т.е. в поле метки виджета разместим новый текст 😉 Как видите — все просто:
До нажатия кнопки:
На этом по вопросу, который звучит как Tkinter — что это — пока все 🙂 Продолжение завтра.
Спасибо!
В случае возникновения вопросов — пожалуйста, пишите на почту, или в Telegram.