Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python Tkinter中使用网格布局拉伸框架_Python_User Interface_Tkinter - Fatal编程技术网

在Python Tkinter中使用网格布局拉伸框架

在Python Tkinter中使用网格布局拉伸框架,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在尝试使用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)

我正在尝试使用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
中的单列将扩展到它包含的最大内容的宽度,即
internal\u b
的宽度,然后
internal\u a
的宽度,然后第一个按钮的宽度,将是第二个按钮的宽度

事实上,发生的情况如下;第一个按钮的宽度仅足以容纳“1”,没有第二个按钮宽


要使第一个按钮扩展第二个按钮的大小,我需要做什么?

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


你需要做的另一件事是给你的专栏加一个权重。代码中发生的情况是,小部件正在扩展以填充列,但列没有扩展以填充主列。如果你给它一个1的重量,它会。您需要执行类似于
internal\u a.columnconfigure(1,weight=1)
的操作,然后对
internal\u b
执行类似操作

给小部件提供相同的直接父对象不是一个选项;这是实际问题的一个最小示例,将相关小部件作为直接子部件确实不是一个选项。修正权重(对于列
0
,而不是回答中的
1
)将其排序,谢谢@me_和:你知道你可以把小部件放在一个不同于其父容器的容器中吗?这是一项非常有价值的技术。网格中有一个
选项,用于打包和放置命令。