如何使用grid Tkinter将所有小部件组合在一起

时间:2017-03-23 20:18:26

标签: python-2.7 tkinter

我正在尝试适应所有小部件,我有树框架:

第一帧:  有一个标签(需要有一个大字母大小的名称)  一个自定义组合框,用于在嵌入时更改标签的值  用于选择组合框的按钮

第二帧:  有一个树视图,其中包含一些信息,当我在一行中制作一个clic时,第三帧中会出现另一个树视图。这个树视图占据了所有框架

第三帧:  有三列:   第一行有两行:    拳头行两个按钮添加和删除,占用所有行。    第二行是占据所有空间的树视图。单击第一个树视图中的行时会出现此树视图,如何显示空树视图并在单击该行时填写。该功能是OnDoubleClick   第二栏:    有两个按钮必须位于行的中心。   第三栏:    与第一个相同,但与其他树视图相同。

这是我想要实现的目标的图像:

enter image description here

1 个答案:

答案 0 :(得分:1)

我不打算重写你的整个程序,因为这是很多代码,但我会解释我解决问题的方法。如果你有条不紊和有条理,Tkinter布局非常简单,并且尝试一次只解决一个问题。

主要布局

首先,您似乎有三个主要部分:顶部的工具栏,带树视图的中间部分和带有大量内容的底部部分。所以,我要做的第一件事是创建三个框架,每个部分一个。然后,我会像这样使用pack

toolbar.pack(side="top", fill="x")
main.pack(side="top", fill="both", expand=True)
bottom.pack(side="top", fill="both", expand=False)
  • 我不知道第三部分是否应该扩大。目前尚不清楚用户调整窗口大小时的行为。

工具栏布局

这个非常简单。这三个小部件平等分布。您可以使用packgrid,也可以正常使用。

主要布局

这只是一个树视图,或者是带滚动条的树视图?同样,packgrid可以通过如此简单的布局正常工作。

这个看起来由三个部分组成:左侧部分,中间部分和右侧部分。与主要布局一样,我将首先创建三个框架,所有框架都是之前创建的“底部”框架的子框架。然后,我会再次使用pack,因为它是一个简单的水平布局:

left.pack(side="left", fill="both", expand=True)
middle.pack(side="left", fill="both", expand=False)
right.pack(side="left", fill="both", expand=True)

通过将expand=True设置为左侧和右侧,如果窗口增大或缩小,当中间部分保持其自然大小时,这些也会增大或缩小。

左下和右下

这两个看起来都一样。看起来最简单的事情就是创建窗口小部件(即:不再有框架),然后使用grid来布局它们。但是,如果用“按钮”表示你可以有几个,你可以为按钮创建一个框架,这样你就可以更容易地从左到右包装所有按钮。

底中心

您可以创建属于此框架子项的按钮,并使用gridpack