0

给定以下网格布局配置:

在此处输入图像描述

它是通过代码生成的:

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()

我尝试插入一个Entryin以便它使用以下代码frame1扩展到整个宽度:frame1

e1 = Entry(frame1)
e1.grid(sticky="we", columnspan=4)

但是,我得到了以下结果:

在此处输入图像描述

如何使Entry小部件与frame1?

4

1 回答 1

3

该条目在 inside frame1,因此它所在的网格与根窗口中的网格完全无关。

由于您没有告诉 tkinter 如何处理内部的额外空间frame1,因此它未使用。如果您希望第 0 列中的条目小部件填充框架,则需要为其列赋予权重。

frame1.grid_columnconfigure(0, weight=1)

如果这是唯一进入的小部件frame1,您可能需要考虑使用,pack因为您可以在一行代码中完成所有操作:

e1.pack(side="top", fill="x", expand=True)
于 2018-01-26T17:44:37.053 回答