Почему пакет одного и того же фрейма на разных линиях выводит разные вещи? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь распечатать 3 кнопки в виде плиток рядом друг с другом, поэтому, когда я пишу этот код с пакетом рядом с созданием кадра Я получаю этот вывод:

enter image description here] 1

Когда я упаковываю кадр, я получаю этот вывод

enter image description here

Я не понимаю, пожалуйста, объясните

КОД 1

class mainpage:
  def __init__(self,master):
    mainpage=Frame(master,width=100, height=100).pack(pady=50)
    self.im=Image.open("g.png")
    self.ph=ImageTk.PhotoImage(self.im)
    b1=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
    b2=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
    b3=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
 root = Tk()
 m=mainpage(root)
 root.mainloop()

КОД 2

class mainpage:


def __init__(self,master):
    mainpage=Frame(master,width=100, height=100).pack(pady=50)
    self.im=Image.open("g.png")
    self.ph=ImageTk.PhotoImage(self.im)
    b1=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
    b2=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
    b3=Button(mainpage,image=self.ph).pack(side=LEFT,padx=50)
    mainpage.pack(pady=50)
root = Tk()
m=mainpage(root)
root.mainloop() 

1 Ответ

0 голосов
/ 27 июня 2019

Разница в том, что порядок, который вы называете pack, имеет значение.pack помещает вещи в оставшееся пространство.Как только вы упаковали что-то вдоль одной из сторон окна, оно удаляет оставшееся пространство.

Проблема в вашем коде в том, что вы помещаете все в корневое окно.Это из-за этой строки кода:

mainpage=Frame(master,width=100, height=100).pack(pady=50)

Это установка mainpage в None.Таким образом, когда вы делаете Button(mainpage, ...), это то же самое, что и Button(None, ...), который помещает кнопку в корневое окно.

Я предполагаю, что вы намереваетесь поместить кнопки внутрь mainpage, чтобы сделать это,Вы должны отделить создание mainpage от макета mainpage:

mainpage=Frame(master,width=100, height=100)
mainpage.pack(pady=50)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...