我试图并排打印出3个按钮作为图块,所以当我将此代码与包一起编写并创建框架时 我得到以下输出:
] 1
当我打包帧之后,我得到这个输出
我不明白,请解释
代码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()
答案 0 :(得分:0)
区别在于,您调用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)