如何让.grid_columnconfigure()在Frame内部工作?

时间:2019-07-23 16:02:42

标签: python tkinter grid

我想使用grid-Method和grid_columnconfigure / grid_rowconfigure在python中使用tkinter创建GUI。 不幸的是,这在框架内不起作用。 我如何获得这项工作?

from tkinter import *

master = Tk()
master.state('zoomed')
f = Frame(master, width=800, height=400)

Label1 = Label(f, text='Label 1')
Label2 = Label(f, text='Label 2')

f.grid_columnconfigure(0, weight=1)
f.grid_columnconfigure(2, weight=1)
f.grid_columnconfigure(4, weight=1)

Label1.grid(row=0, column=1)
Label2.grid(row=0, column=3)

f.pack()

master.mainloop()

其他问题: 我得到了很好的答案,所有的pack-Manager都可以正常工作。 但是,如果使用grid-Manager怎么办呢?

1 个答案:

答案 0 :(得分:0)

grid_columnconfigure工作正常。问题是您的框架默认情况下会将其尺寸设置为尽可能小的尺寸以适合标签。由于空列没有大小,因此框架的宽度将足以容纳两个标签。

如果在开发过程中为frame提供独特的颜色,这将很容易实现。有时还有助于为框架提供视觉边框,以便您可以看到其边界。

虽然我不知道您的最终目标是什么,但是如果框架填充了整个窗口,您可以看到列之间的空格:

f.pack(fill="both", expand=True)

如果要使用grid而不是pack,则需要做更多的工作。简而言之,将框架放在第0行第0列中,并为该行和列赋予非零权重,以便网格将为该行和列分配所有未使用的空间。

f.grid(row=0, column=0, sticky="nsew")
master.grid_rowconfigure(0, weight=1)
master.grid_columnconfigure(0, weight=1)

如果要强制将窗口设置为特定大小,可以使用主窗口的geometry方法:

master.geometry("800x400")