[英]Stretching frames using grid layout in Python Tkinter
我正在尝试使用Python 2.6.7与Tkinter一起工作。 我希望下面的代码可以将第一个按钮拉伸到第二个按钮的宽度,但是这两个按钮只有它们需要的宽度才能适合它们的文本。
#!/usr/bin/python
from Tkinter import *
win = Frame()
win.grid(sticky=N+S+E+W)
inner_a = Frame(win)
inner_a.grid(row=0, column=0, sticky=N+E+W)
inner_b = Frame(win)
inner_b.grid(row=1, column=0, sticky=S+E+W)
Button(inner_a, text='1').grid(row=0, column=0, sticky=E+W)
Button(inner_b, text='Some long text').grid(row=0, column=0, sticky=E+W)
win.mainloop()
根据我的理解, win
的单列将扩展到它包含的最大内容的宽度,即inner_b
的宽度,然后是inner_a
的宽度,以及第一个按钮的宽度,将是第二个按钮的宽度。
实际上,下面会发生什么; 第一个按钮的宽度足以包含“1”,而不是第二个按钮的宽度。
我需要做什么来获得第一个按钮来扩大第二个按钮的大小?
如果您希望小部件在网格中排成一行,首先要确保它们具有相同的父级。 如果所有窗口小部件的大小相同或者您只使用一列,则这不是必需的。
您需要做的另一件事是给您的柱子增加重量。 您的代码中发生的事情是窗口小部件正在扩展以填充列,但该列未扩展以填充主列。 如果你给它一个1的重量。 您需要执行类似inner_a.columnconfigure(1, weight=1)
,然后对inner_b
执行inner_b
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.