Глава 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()