我想将标签放在窗口宽度的中心。我很难用'锚'来实现它。我是Python的新手。
我的代码是:
window = Tk()
window.geometry("440x640")
window.title("Title")
Label(window, text="this text to center",font=("Calibri",32)).grid(row=0)
Label(window, text="Second").grid(row=1)
e2 = Entry(window)
e2.grid(row=1, column=1)
window.mainloop()
答案 0 :(得分:0)
默认情况下,项目在网格单元格中居中,您无需执行任何操作。您遇到的问题是包含单元格的列仅对该列中的最大项目足够宽,在本例中为标题。因此,它以其单元格为中心,但单元格与标签一样宽,因此它看起来并不居中。
如果您希望标题跨越窗口(而不是单元格)的宽度,则需要使用columnspan
选项,以便它遍历所有列你正在使用。
例如:
l1 = Label(window, ...)
l1.grid(row=0, columnspan=2)
但是,它仍然不会显示为居中,因为第0列和第1列只会与其最大的项一样大,因为您明确设置了窗口的宽度,因此会在GUI中留下一些额外的空间。您需要执行以下两项操作之一:使窗口变小(或让Tkinter确定最适合您的尺寸,这通常是正确的解决方案),或者指定列0或1(或两者)将扩展以填充任何额外的空间。
对于第一种情况,只需删除对geometry
的调用即可。对于第二个,在根上使用columnconfigure
使一个或两个列具有" weight",这意味着它们将扩展以占用额外的空间。
window.grid_columnconfigure(1, weight=1)
作为使用grid
时的一般经验法则,您应始终至少为一行和至少一列赋予权重,以便小部件展开以适应可用空间。