Python Tkinter网格问题-用户错误?

Python Tkinter网格问题-用户错误?,python,tkinter,Python,Tkinter,我正在尝试使用Tkinter为Python gui创建一个基本布局 #!/usr/bin/env python from Tkinter import * #create root root = Tk() banner = Frame(root, width=500) body = Frame(root, width=500) banner.grid() body.grid() bannercontent = Label(banner, bg="Green", text="Green")

我正在尝试使用Tkinter为Python gui创建一个基本布局

#!/usr/bin/env python
from Tkinter import *

#create root
root = Tk()

banner = Frame(root, width=500)
body = Frame(root, width=500)
banner.grid()
body.grid()


bannercontent = Label(banner, bg="Green", text="Green").grid(row=0, column=0)
bannerbuttons = Label(banner, bg="Red", text="Red").grid(row=0, column=1)
bodycontent = Label(body, bg="Blue", text="Blue").grid(row=1, column=0, columnspan=2, sticky=E+W)
root.mainloop()
然而,在上面,蓝色标签并没有像我所希望的那样扩展到填充两列,即填充绿色和红色下的空间。请问我做错了什么

这里的例子


提前感谢您

您的代码有一些问题。首先,您没有指定一个
sticky
选项,因此小部件不会“粘住”(即:增长或收缩)单元格的边缘。您的
bodycontent
标签实际上占据了两列,但框架本身并没有扩展到主窗口的全宽

第二个问题是,您似乎假设列跨越整个应用程序。他们没有。您在
横幅中有两列,因为您在第0列和第1列中放置了一个小部件。但是,
bodycontent
只有一列(或者,您可以说它有两列,但第二列的宽度为零)。第一个框架中的列大小与第二个框架中的列没有关系。因此,底部框架内容不会与顶部框架对齐

代码中的第三个问题是没有为行或列赋予“权重”。
weight
属性告诉Tkinter如何分配任何额外空间。因为您还没有这样做,所以当您增大或缩小窗口时,GUI不会以令人愉快的方式调整大小。一个很好的经验法则是,对于任何给定的容器,至少应该为一行和一列指定非零权重