Tkinter调整网格大小

时间:2017-06-12 22:02:36

标签: python-3.x tkinter grid

我的标签排列成网格,标签3粘在其单元格的SE侧。

from tkinter import *

class GUI:
    def __init__(self, parent):

        self.label1 = Label(parent, text = "Column 1")
        self.label2 = Label(parent, text = "Column 2")
        self.label3 = Label(parent, text = "Column 3")
        self.label1.grid(row=0, column=0)
        self.label2.grid(row=0, column=1)
        self.label3.grid(row=0, column=2, sticky=SE)

root = Tk()
root.geometry("800x600")
sale = GUI(root)
root.title("Example")
root.mainloop()

当我运行程序时,网格占据了窗口总大小的一小部分。如何让label3粘贴在网格中窗口的右下角?

1 个答案:

答案 0 :(得分:0)

grid对齐方法使用其中最大小部件的大小来确定网格中每个行和列的大小。

所以,如果你想要"第3列"要显示在GUI右下角的文字,您可以通过手动设置其widthheight来增加第三个标签:

class GUI:
    def __init__(self, parent):
        self.label1 = Label(parent, text="Column 1", bg='red')
        self.label2 = Label(parent, text="Column 2", bg='blue')
        self.label3 = Label(parent, text="Column 3", bg='green', 
                            width=97, height=39, anchor=SE)
        self.label1.grid(row=0, column=0, sticky=N)
        self.label2.grid(row=0, column=1, sticky=N)
        self.label3.grid(row=0, column=2, sticky=SE)

root = Tk()
#root.geometry("800x600")
sale = GUI(root)
root.mainloop()

另一种选择是使用pack对齐方法:

class GUI:
    def __init__(self, parent):
        self.label1 = Label(parent, text="Column 1", bg='red', anchor=N)
        self.label2 = Label(parent, text="Column 2", bg='blue', anchor=N)
        self.label3 = Label(parent, text="Column 3", bg='green', anchor=SE)
        self.label1.pack(fill=Y, side='left')
        self.label2.pack(fill=Y, side='left')
        self.label3.pack(fill=X, side='bottom')

root = Tk()
root.geometry("800x600")
sale = GUI(root)
root.mainloop()