python grid用法_如何使用grid()水平居中小部件?

没有诀窍——默认情况下,小部件位于分配给它的区域的中心。只要将标签放在没有任何sticky属性的单元格中,它就会居中。

现在,另一个问题是,如何得到它被分配到中心的区域。这取决于许多其他因素,例如还有哪些小部件,它们是如何排列的,等等

下面是一个简单的例子,显示了一个单中心标签。它通过确保它所在的行和列占用所有额外的空间来实现这一点。请注意,无论窗口有多大,标签都保持居中。import Tkinter as tk

class Example(tk.Frame):

def __init__(self, parent):

tk.Frame.__init__(self, parent)

label = tk.Label(self, text="This should be centered")

label.grid(row=1, column=1)

self.grid_rowconfigure(1, weight=1)

self.grid_columnconfigure(1, weight=1)

if __name__ == "__main__":

root = tk.Tk()

Example(root).grid(sticky="nsew")

root.grid_rowconfigure(0, weight=1)

root.grid_columnconfigure(0, weight=1)

root.mainloop()

通过赋予所有行和列权重,可以获得类似的效果,但带有标签的行和列除外。import Tkinter as tk

class Example(tk.Frame):

def __init__(self, parent):

tk.Frame.__init__(self, parent)

label = tk.Label(self, text="This should be centered")

label.grid(row=1, column=1)

self.grid_rowconfigure(0, weight=1)

self.grid_rowconfigure(2, weight=1)

self.grid_columnconfigure(0, weight=1)

self.grid_columnconfigure(2, weight=1)

if __name__ == "__main__":

root = tk.Tk()

Example(root).grid(sticky="nsew")

root.grid_rowconfigure(0, weight=1)

root.grid_columnconfigure(0, weight=1)

root.mainloop()