Tkinter网格几何管理器大小传播(带粘性)

我遗漏了一些关于尺寸如何在Tk中传播的东西.试试这个:

from Tkinter import *

root = Tk()

frame1 = Frame(root, border=4, relief=RIDGE)
frame1.grid(sticky=E+W)
frame2 = Frame(root, border=4, relief=RIDGE)
frame2.grid(sticky=E+W)

label1 = Label(frame1, text='short', background='white')
label1.grid(sticky=E+W)
label2 = Label(frame2, text='quite a bit longer', background='white')
label2.grid(sticky=E+W)

root.mainloop()

label1在frame1内,label2在frame2内.
label1比label2更窄,如白色背景所示.但是frame1和frame2的宽度相同,如边框所示.我认为粘性会将label1扩展为与其父级相同的宽度.

如果我将label1和label2放在同一帧中,那么label1与label2一样宽:

frame1 = Frame(root, border=4, relief=RIDGE)
frame1.grid(sticky=E+W)

label1 = Label(frame1, text='short', background='white')
label1.grid(sticky=E+W)
label2 = Label(frame1, text='quite a bit longer', background='white')
label2.grid(sticky=E+W)

我错过了什么?在现实生活中,我有一些堆叠的嵌套框架,没有像我想的那样扩展.

谢谢,

行和列具有“重量”,其描述了它们如何生长或缩小以填充母版中的额外空间.默认情况下,行或列的权重为零,这意味着您已告知标签填充列,但您尚未告知列填充主框架.

要解决此问题,请为列添加重量.在这种特定情况下,任何正整数都可以:

frame1.columnconfigure(0, weight=1)
frame2.columnconfigure(0, weight=1)

有关grid的更多信息,请参阅ruby,tcl,perl和python中的示例,请参阅the grid page on tkdocs.com

相关文章
相关标签/搜索