0

我正在尝试使用 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()

然而,对于上述情况,蓝色标签并没有像我希望的那样扩展以填充 2 列,即填充绿色和红色下的空间。请问我做错了什么?

这里的例子 http://imgur.com/nGWQX9y

例子

先感谢您

4

1 回答 1

1

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

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

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

于 2013-04-23T19:15:38.963 回答