使用grid()在LabelFrame中居中单元格

时间:2017-08-14 13:37:09

标签: python tkinter

如何使用网格几何管理器将Tkinter中LabelFrame中的所有行和列居中?默认情况下,所有内容都在其单元格中居中,但如果LabelFrame具有设置的高度和宽度,如何将单元格置于LabelFrame中心?

例如:

self.labelframe = Labelframe(self, text="First Labelframe",height=200, width=200)
self.labelframe.pack()

self.label1 = Label(self.labelframe, text="Label1")
self.label1.grid(row=0, column=0)

self.label2 = Label(self.labelframe, text="Label2")
self.label2.grid(row=0, column=1)

self.label3 = Label(self.labelframe, text="Label3")
self.label3.grid(row=1, column=0)

在此示例中,标签位于其单元格的中心,但单元格将从LabelFrame的左上角开始。有没有办法让细胞居中?

谢谢!

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是在顶部和底部添加一个空行,在左侧和右侧添加一个空列。为这些行和列赋予权重,以便为它们提供任何额外的空间。

self.label1.grid(row=1, column=1)
self.label2.grid(row=1, column=2)
self.label3.grid(row=2, column=1)

self.labelframe.grid_rowconfigure(0, weight=1)
self.labelframe.grid_rowconfigure(3, weight=1)
self.labelframe.grid_columnconfigure(0, weight=1)
self.labelframe.grid_columnconfigure(3, weight=1)

另一种解决方案是添加围绕self.labelframe的另一个框架。然后,您可以让self.labelframe保持其所需的大小,但将其置于其他框架的中心位置。