在Python Tkin中使用网格布局拉伸帧

2024-06-06 08:46:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python2.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”,而没有第二个按钮那么宽。

Screen shot: two buttons stacked on top of each other, the first has the single character "1", the second the words "Some long text". The bottom button is considerably wider than the top.

我需要做什么才能得到第一个按钮来扩展第二个按钮的大小?


Tags: 代码text文本宽度tkinterusrcolumnbutton
1条回答
网友
1楼 · 发布于 2024-06-06 08:46:24

如果希望小部件在网格中排列,首先要确保它们具有相同的父级。如果所有小部件都是相同大小的,或者您只使用一个列,那么这并不是绝对必要的。

你需要做的另一件事是给你的专栏一个权重。代码中发生的情况是小部件正在展开以填充列,但列没有展开以填充主控形状。如果你给它1的重量,它会。你应该做一些类似于inner_a.columnconfigure(1, weight=1)的事情,然后对inner_b做同样的事情。

相关问题 更多 >