Python 在框架中对中标签

Python 在框架中对中标签,python,tkinter,Python,Tkinter,我在尝试将标签置于框架中心时遇到问题。我正在使用网格几何管理器,我尝试了各种方法,比如使用“粘性”和重新安排框架的工作方式。下面是它现在的屏幕截图: 我试图使“偶数”文本在框架中居中。这是我目前的代码: the_frame = Frame(the_window, width= 400, height = 150, relief = 'groove', borderwidth = 2) the_frame.grid_propagate(False) the_t

我在尝试将标签置于框架中心时遇到问题。我正在使用网格几何管理器,我尝试了各种方法,比如使用“粘性”和重新安排框架的工作方式。下面是它现在的屏幕截图:

我试图使“偶数”文本在框架中居中。这是我目前的代码:

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)

找到了答案!使用.place方法是可行的,因为\u文本是父对象\u框架的子对象。以下是我所做的:

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

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

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

the_frame.grid_rowconfigure(1, weight=1)
the_frame.grid_columnconfigure(1, weight=1)
此外,将标签放在第一行、第一列,但行和列的编号从零开始。这是无害的,因为不包含任何内容的行和列不会占用任何空间(除非您赋予它们权重)