Какой метод расположения виджетов лучше использовать в Tkinter: pack, place или grid?

Как разместить две кнопки по середине оси 'Y', прижатые к верхнему краю, чтобы при нажатии на одну из них отображался новый виджет над ними, а кнопки оставались по центру и прижатыми к нижнему краю этого виджета? В текущей конфигурации нужно сделать такие изменения?
  • 4 мая 2024 г. 20:50
Ответы на вопрос 2
Для данной ситуации наиболее удобным методом расположения виджетов будет grid, так как он позволяет более гибко настраивать расположение элементов и их размеры.

Для размещения двух кнопок по середине оси 'Y' и прижатых к верхнему краю, вы можете использовать следующий код:

```python
import tkinter as tk

def show_new_widget():
    new_label = tk.Label(root, text="Новый виджет")
    new_label.grid(row=1, column=0)

root = tk.Tk()

button1 = tk.Button(root, text="Кнопка 1")
button2 = tk.Button(root, text="Кнопка 2", command=show_new_widget)

button1.grid(row=0, column=0, sticky="n")
button2.grid(row=0, column=0, sticky="s")

root.mainloop()
```

В этом коде кнопки button1 и button2 размещаются в строке 0 с помощью grid. Кнопка button2 задает команду show_new_widget, которая при ее нажатии отображает новый виджет (в данном случае, Label) над кнопками. Кнопки остаются прижатыми к нижнему краю нового виджета благодаря параметру sticky="s".
Помести кнопки в Frame, Frame прикрути через pack(). Кнопки внутри фрейма - можно тоже через pack, можно еще как. 
Единственное, при добавлении новых элементов нужно будет сообразить, как указать, чтобы они паковались ДО фрейма с кнопками.
Похожие вопросы