给出以下网格布局配置:
它是通过代码生成的:
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()
我尝试在Entry
中插入frame1
,以便使用以下代码扩展到整个frame1
宽度:
e1 = Entry(frame1)
e1.grid(sticky="we", columnspan=4)
但是,我得到了以下结果:
如何让Entry
小部件占用与frame1
相同的宽度?
答案 0 :(得分:2)
该条目位于frame1
内,因此它所在的网格与根窗口中的网格完全无关。
由于您没有告诉tkinter如何处理frame1
内的额外空间,因此未使用它。如果您希望第0列中的条目小部件填充框架,则需要为其列赋予权重。
frame1.grid_columnconfigure(0, weight=1)
如果这是frame1
中唯一的小部件,您可能需要考虑使用pack
,因为您可以在一行代码中完成所有操作:
e1.pack(side="top", fill="x", expand=True)