Глава 16 · Создаём классные приложения с Tkinter

Метки, кнопки и их размещение

Первые интерактивные виджеты — и то, как Tkinter размещает их в окне.

Метки, кнопки и их размещение

Метка (Label) показывает текст, кнопка (Button) реагирует на клик. Оба виджета сначала создаются, а затем размещаются в окне — отдельным действием:

metki_knopki.py
import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Привет, Tkinter!")
label.pack()

def na_knopku_nazhali():
    print("Кнопку нажали!")

button = tk.Button(root, text="Нажми меня", command=na_knopku_nazhali)
button.pack()

root.mainloop()

Параметр command связывает кнопку с функцией — важно передать саму функцию, без скобок: command=na_knopku_nazhali, а не command=na_knopku_nazhali().

Частая ошибка: скобки в command
command=na_knopku_nazhali() вызовет функцию немедленно, один раз, при создании кнопки — а не при каждом клике. Кнопка свяжется с тем, что функция вернёт, а не с самой функцией.

Подробно о pack

.pack() — самый простой способ разместить виджет в окне. По умолчанию виджеты укладываются друг под другом сверху вниз, но есть полезные параметры:

pack_podrobno.py
label.pack(side="left", padx=10, pady=10)
# side: top (по умолчанию), bottom, left, right
# padx/pady: внешний отступ по горизонтали/вертикали
Практика в Jupyter Notebook
16-02-metki-knopki.ipynb · Label, Button и pack()
Открыть ноутбук →