Как добавить фрейм внутри другого фрейма в Tkinter? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь добавить кадр внутри другого кадра, используя tkinter, но кадр не добавляется:

Код:

lframe=Frame(r,width=1000,height=650,relief='raise',bd=8).pack(side=LEFT)

rframe=Frame(r,width=350,height=650,relief='raise',bd=8).pack(side=RIGHT)



lframe1=Frame(lframe,width=1000,height=100,bd=8,relief='raise').pack(side= TOP)

lframe2=Frame(lframe,width=1000,height=55,bd=8,relief='raise').pack(side=TOP)

rframe1=Frame(rframe,width=350,height=215,relief='raise',bd=8).pack(side=TOP)

rframe2=Frame(rframe,width=350,height=415,relief='raise',bd=8).pack(side=TOP)

r.mainloop()

он показывает следующий вывод

Output

1 Ответ

0 голосов
/ 22 мая 2018

Что вызвало вашу проблему?

lframe стоит None и не относится к экземпляру фрейма, который вы создали в любом случае.Почему так?

Потому что pack(), gird() и place() менеджеры по расположению - это функции, которые ничего не возвращают.Поэтому, когда вы пишете:

lframe=Frame(r,width=1000,height=650,relief='raise',bd=8).pack(side=LEFT)

Вы явно получаете None от pack(side=LEFT)

Как решить вашу проблему?

Просто следуйте этомуПринцип всякий раз, когда вы создаете виджет: создавайте, затем позиционируйте (В вашем случае вы создаете и размещаете виджет одновременно).Я лично называю этот принцип идиома SaYa .Это означает, что предыдущая строка кода должна быть написана следующим образом:

lframe=Frame(r,width=1000,height=650,relief='raise',bd=8)
lframe.pack(side=LEFT)

Примените эту идиому ко всем вашим виджетам, и это избавит вас от некоторых неприятностей.

...