我正在尝试使用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”,而不是第二个按钮。
我需要做什么才能获得第一个按钮来扩大第二个按钮的大小?
答案 0 :(得分:9)
如果您希望小部件在网格中排成一行,首先要确保它们具有相同的父级。如果所有小部件的大小相同或者您只使用一列,则这不是必需的。
您需要做的另一件事是给您的柱子增加重量。您的代码中发生的事情是窗口小部件 扩展以填充列,但该列未扩展以填充主列。如果你给它一个1的重量。您需要执行类似inner_a.columnconfigure(1, weight=1)
的操作,然后对inner_b
执行此操作。