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

Строки и столбцы — grid

Для форм с несколькими колонками grid() удобнее, чем pack().

.pack() прекрасно подходит для простых случаев, но у него есть предел: сложные формы с несколькими колонками собрать сложно. Для этого есть .grid() — размещение по строкам и столбцам, как в таблице:

grid.py
import tkinter as tk

root = tk.Tk()

tk.Label(root, text="Имя:").grid(row=0, column=0)
tk.Entry(root).grid(row=0, column=1)

tk.Label(root, text="Email:").grid(row=1, column=0)
tk.Entry(root).grid(row=1, column=1)

tk.Button(root, text="Отправить").grid(row=2, column=0, columnspan=2)

root.mainloop()
Позиция01
row=0Label «Имя:»Entry
row=1Label «Email:»Entry
row=2Button (columnspan=2 — занимает обе колонки)
Не смешивайте pack() и grid() в одном контейнере
Виджеты внутри одного и того же родительского окна (или фрейма) должны использовать либо только pack(), либо только grid() — смешение вызывает ошибку. Разные контейнеры (например, вложенные Frame, раздел 16.13) могут использовать разные способы размещения независимо друг от друга — подробная схема «хорошо/плохо» будет в разделе 16.15.

О том, как сделать такую форму отзывчивой к изменению размера окна — в разделе 16.15 «Адаптивный grid».

Практика: компоновка через grid()
Модуль tkinter открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →