使用 columnspan 时,如何使小部件占据与其主框架相同的宽度?
How to make a widget occupy the same width as that of its master frame when using columnspan?
给定以下网格布局配置:
通过代码生成:
from Tkinter import *
master = Tk()
frame1 = Frame(master, width=100, height=100, bg="red")
frame1.grid(sticky="nsew", columnspan=4)
frame2 = Frame(master, width=100, height=100, bg="blue")
frame2.grid()
frame3 = Frame(master, width=100, height=100, bg="green")
frame3.grid(row=1, column=1)
frame4 = Frame(master, width=100, height=100, bg="yellow")
frame4.grid(row=1, column=2)
frame4 = Frame(master, width=100, height=100, bg="purple")
frame4.grid(row=1, column=3)
master.mainloop()
我试图在 frame1
中插入一个 Entry
,以便它使用以下代码扩展到整个 frame1
宽度:
e1 = Entry(frame1)
e1.grid(sticky="we", columnspan=4)
但是,我得到了以下结果:
如何使 Entry
小部件与 frame1
占用相同的宽度?
该条目在 frame1
内,因此它所在的网格与根 window 中的网格完全无关。
由于您没有告诉 tkinter 如何处理 frame1
中的额外 space,因此未使用它。如果你想让第0列的entry widget填满frame,你需要给它的列一个权重。
frame1.grid_columnconfigure(0, weight=1)
如果这是 frame1
中唯一的小部件,您可能需要考虑使用 pack
,因为您可以在一行代码中完成所有操作:
e1.pack(side="top", fill="x", expand=True)
给定以下网格布局配置:
通过代码生成:
from Tkinter import *
master = Tk()
frame1 = Frame(master, width=100, height=100, bg="red")
frame1.grid(sticky="nsew", columnspan=4)
frame2 = Frame(master, width=100, height=100, bg="blue")
frame2.grid()
frame3 = Frame(master, width=100, height=100, bg="green")
frame3.grid(row=1, column=1)
frame4 = Frame(master, width=100, height=100, bg="yellow")
frame4.grid(row=1, column=2)
frame4 = Frame(master, width=100, height=100, bg="purple")
frame4.grid(row=1, column=3)
master.mainloop()
我试图在 frame1
中插入一个 Entry
,以便它使用以下代码扩展到整个 frame1
宽度:
e1 = Entry(frame1)
e1.grid(sticky="we", columnspan=4)
但是,我得到了以下结果:
如何使 Entry
小部件与 frame1
占用相同的宽度?
该条目在 frame1
内,因此它所在的网格与根 window 中的网格完全无关。
由于您没有告诉 tkinter 如何处理 frame1
中的额外 space,因此未使用它。如果你想让第0列的entry widget填满frame,你需要给它的列一个权重。
frame1.grid_columnconfigure(0, weight=1)
如果这是 frame1
中唯一的小部件,您可能需要考虑使用 pack
,因为您可以在一行代码中完成所有操作:
e1.pack(side="top", fill="x", expand=True)