我在尝试将标签置于框架中心时遇到了麻烦。我正在使用网格几何管理器,我尝试过各种各样的事情,例如使用“粘性”和“粘性”。并重新安排我的框架的工作方式。下面是现在的截图:
我试图让“偶数”变得更加轻松。要在框架中居中的文本。这是我目前的代码:
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)
答案 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)
另外,您将标签放在第一行第一列,但行和列编号从零开始。它是无害的,因为不包含任何东西的行和列不会占用任何空间(除非你给它们重量)。