Я думаю, что вы упускаете из виду то, что на самом деле есть пакет и сетка.Рассмотрим такой код:
import tkinter as tk
root = tk.Tk()
myFrame = tk.Frame(root)
myFrame.pack()
myButton1 = tk.Button(myFrame, text='This is button 1')
myButton2 = tk.Button(myFrame, text='This is button 2')
myButton1.grid(row=0, column=0)
myButton2.grid(row=1, column=0)
root.mainloop()
Создав root
, мы создадим новое окно.В этом окне мы разместим все остальное.Затем мы создаем myFrame
.Обратите внимание, что фактическая «вещь» (в более адекватных терминах - виджет) создается в строке myFrame = tk.Frame(root)
.Обратите внимание, что мы должны указать, куда мы собираемся поместить этот виджет в скобки, и мы написали, что он будет корневым - наше главное окно.Пустой кадр, вероятно, не лучший пример, так как вы не можете видеть, как он размещается (если только вы не используете хотя бы несколько спецификаций), но все же.Мы создали его, но не поместили в наш пользовательский интерфейс.Мы используем .pack()
, чтобы разместить его.Теперь вы обращаетесь к виджетам как к пакетам или сеткам.Это не правда, хотя.Пакет и сетка - это просто набор правил, по которым виджеты размещаются внутри какого-то окна.Из-за этого, если вы хотите добавить что-то большее к root
в нашем случае, вам придется снова использовать .pack()
.Зачем?Если вы дадите два набора правил размещения вещей на экране для вашего компьютера - они, скорее всего, будут конфликтовать друг с другом.Однако, если мы опустимся еще на один уровень и теперь захотим поместить что-то в наш myFrame
, мы снова сможем выбрать, какой набор правил использовать.Это потому, что не имеет значения, где наши frame
окажутся внутри root
, теперь мы просто хотим указать, где наши кнопки 1 и 2 окажутся в кадре.Поэтому мы можем снова использовать .pack()
или переключиться на .grid()
.
. Итак, .pack()
, .grid()
и .place()
- это наборы правил размещения виджетов внутри других виджетов.В более общих чертах это правила о том, как размещать ящики в других ящиках.В одних коробках, в которых мы размещаем другие, может быть только один набор правил.
Надеюсь, этот пример поможет.