Pygtk 简明教程

PyGTK - Containers

PyGTK 库提供不同的容器类来控制窗口内小组件的位置。最简单的方法是使用一个 fixed container class ,然后指定其以像素为单位的绝对坐标,以此将其内部放置一个小组件。

让我们现在按照以下步骤操作 -

Step 1 - 声明一个 fixed class 的对象

fixed = gtk.Fixed()

Step 2 - 创建一个按钮小组件,并使用需要 x 和 y 坐标的 put() 方法将其添加到固定容器中。此处,按钮将被放置在 (100,100) 位置。

btn = gtk.Button("Hello")
fixed.put(btn, 100,100)

Step 3 - 可以在固定容器中放置多个控件。然后将其添加到顶级窗口,并调用 show_all() 方法

self.add(fixed)
self.show_all()

但是,此绝对布局由于以下原因而不合适 -

  1. 即使调整了窗口的大小,小组件的位置也不会改变。

  2. 在具有不同分辨率的不同显示设备上,外观可能不统一。

  3. 布局的修改很困难,因为它可能需要重新设计整个表单。

以下是 original window -

hello world

以下是 resized window -

pygtk hello world

按钮的位置在这里保持不变。

PyGTK API 针对容器内部小组件的位置提供容器类,以增强管理。布局管理器相对于绝对位置配置的优点包括:

  1. 窗口中的小组件自动调整大小。

  2. 确保在不同分辨率的显示设备上一致的外观。

  3. 添加或删除小组件的动态性无需重新设计。

gtk.Container 作为以下类的基类:

  1. gtk.ButtonBox

  2. gtk.Box

  3. gtk.Alignment

  4. gtk.EventBox

  5. gtk.Table