fram中的居中标签

2024-04-20 10:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着把一个标签放在一个框的中心有点困难。我正在使用网格几何管理器,我尝试了各种方法,比如使用“粘滞”和重新安排我的框架工作方式。下面是它现在的截图:

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)

Tags: thetextmargincheckcolumnwindowvariableframe
2条回答

您没有为行和列分配任何权重。这会导致行和列的大小刚好能容纳它们的内容。如果GUI中有额外的空间,它将不被分配。在您的例子中,包含标签的列的宽度将刚好适合标签,而右侧的所有空间都将被闲置。在

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

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

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

找到答案了!使用.place方法是因为“文本”是父对象“框架”的子对象。我是这样做的:

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

相关问题 更多 >