Глава 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()
Не смешивайте pack() и grid() в одном контейнере
Виджеты внутри одного и того же родительского окна (или фрейма) должны использовать либо только pack(), либо только grid() — смешение вызывает ошибку или зависание интерфейса. Разные контейнеры (например, вложенные Frame) могут использовать разные способы размещения независимо друг от друга.
Практика в Jupyter Notebook
16-07-grid.ipynb · компоновка через grid()
Открыть ноутбук →