在框架中居中标签

时间:2015-09-21 07:20:38

标签: python tkinter

我在尝试将标签置于框架中心时遇到了麻烦。我正在使用网格几何管理器,我尝试过各种各样的事情,例如使用“粘性”和“粘性”。并重新安排我的框架的工作方式。下面是现在的截图:

example

我试图让“偶数”变得更加轻松。要在框架中居中的文本。这是我目前的代码:

the_frame = Frame(the_window, width= 400, height = 150,
                  relief = 'groove', borderwidth = 2)
the_frame.grid_propagate(False)
the_text = Label(the_frame, text = 'Even')
alpha_check = Checkbutton(the_window, text = 'Alpha', variable = boxtick0,
                          command = oddoreven)
beta_check = Checkbutton(the_window, text = 'Beta', variable = boxtick1,
                          command = oddoreven)
gamma_check = Checkbutton(the_window, text = 'Gamma', variable = boxtick2,
                          command = oddoreven)
margin = 5
the_frame.grid(padx = margin, pady = margin,
                row = 1, column = 1, columnspan = 3)
the_text.grid(padx = margin, pady = margin, row = 2,
                column = 2, sticky=W+E+N+S)
alpha_check.grid(padx = 5, pady = 5, row = 2, column = 1)
beta_check.grid(padx = 5, pady = 5, row = 2, column = 2)
gamma_check.grid(padx = 5, pady = 5, row = 2, column = 3)

2 个答案:

答案 0 :(得分:0)

找到答案!使用.place方法可以正常工作,因为the_text是父对象the_frame的子节点。这是我做的:

the_text.place(relx= 0.5, rely = 0.5, anchor = CENTER)

答案 1 :(得分:0)

您没有为行和列指定任何权重。这会导致行和列足够大以容纳其内容。如果GUI中有额外的空间,它将被取消分配。在您的情况下,包含标签的列将仅足够宽以适合标签,并且右侧的所有空间都未使用。

您可以为第0列和第0行指定正权重,以指示grid为该行和列提供额外的空间,如下所示:

the_frame.grid_rowconfigure(1, weight=1)
the_frame.grid_columnconfigure(1, weight=1)

另外,您将标签放在第一行第一列,但行和列编号从零开始。它是无害的,因为不包含任何东西的行和列不会占用任何空间(除非你给它们重量)。