Глава 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()
| Позиция | 0 | 1 |
|---|---|---|
| row=0 | Label «Имя:» | Entry |
| row=1 | Label «Email:» | Entry |
| row=2 | Button (columnspan=2 — занимает обе колонки) |
Не смешивайте pack() и grid() в одном контейнере
Виджеты внутри одного и того же родительского окна (или фрейма) должны использовать либо только
pack(), либо только grid() — смешение вызывает ошибку. Разные контейнеры (например, вложенные Frame, раздел 16.13) могут использовать разные способы размещения независимо друг от друга — подробная схема «хорошо/плохо» будет в разделе 16.15.О том, как сделать такую форму отзывчивой к изменению размера окна — в разделе 16.15 «Адаптивный grid».
Практика: компоновка через grid()
Модуль tkinter открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально