在Python GTK+ 3中创建盒子


GTK+ 3是一个先进且常用的图形用户界面库(GUI)。它带有丰富的工具和部件,用于创建跨平台的交互式和吸引人的应用程序。让我们专注于GTK+ 3的基础知识及其盒子布局,以管理和排列窗口内的部件。

设置

Windows用户需要使用**Windows Subsystem for Linux (WSL)**。它在Windows环境中使用Linux命令和PyGObject。这简化了对库和GObject Introspection绑定的访问。

当你拥有它时

pip install PyGObject
sudo apt install  libcairo2-dev python3-gi gir1.2-gtk-3.0gcc 
libgirepository1.0-dev gobject-introspection pkg-config  python3-dev 

**GObject** Introspection库和绑定与编程语言具有良好的集成。

PyGObject开发工具和依赖项提供有关已安装库的信息。必须安装它们才能继续进行。

关于GTK+ 3库

它是一个跨平台的图形用户界面(GUI)工具包。桌面应用程序是主要用例,并且它也支持升级。它可在多种编程语言中使用,包括Python。

它配备了多个部件(按钮、标签和输入字段)。这些部件使用布局容器进行排序和结构化。盒子布局就是一个这样的容器,它允许部件水平或垂直堆叠,从而产生灵活且动态的用户界面设计。要在Python中创建盒子布局,请导入模块并配置GTK+库。然后设计一个自定义类,构造水平和垂直Gtk.Boxes,添加部件,并使用pack_start()和pack_end()方法对其进行排列。

算法

  • 初始化GTK库并将所需版本设置为3.0。

  • 从gi.repository导入Gtk模块以访问GTK功能。

  • 定义一个继承自Gtk.Window的自定义类CustomBox。

  • 在__init__方法中,初始化窗口并设置其标题、默认大小,并将“destroy”信号连接到Gtk.main_quit以处理窗口关闭。

  • 创建一个名为hbox的水平Gtk.Box,用于水平放置部件。

  • 使用self.add()方法将hbox添加到窗口。

  • 设置Gtk.Label部件label1和label2。水平放置在hbox中。

  • 创建一个名为vbox的垂直Gtk.Box,用于垂直放置部件。

  • 使用hbox.add()方法将vbox添加到hbox。

  • 创建另外两个Gtk.Label部件label3和label4,并将它们垂直放置在vbox中。

  • 创建一个名为window的CustomBox实例。

  • 使用window.show_all()显示窗口中的所有部件。

  • 使用Gtk.main()启动主要的GTK循环,以处理事件和用户交互。

示例

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class CustomBox(Gtk.Window):
   def __init__(self):
      Gtk.Window.__init__(self)
      self.set_title("Custom GTK +3 Box")
      self.set_default_size(300, 300)
      self.connect("destroy", Gtk.main_quit)

      hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
      self.add(hbox)

      label1 = Gtk.Label(label="TutorialsPoint")
      hbox.pack_start(label1, True, True, 0)

      label2 = Gtk.Label(label="Atharva Shah")
      hbox.pack_start(label2, True, True, 0)

      vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
      hbox.add(vbox)

      label3 = Gtk.Label(label="GTK Tutorial")
      vbox.pack_start(label3, True, True, 0)

      label4 = Gtk.Label(label="Try to Resize the Window")
      vbox.pack_start(label4, True, True, 0)

window = CustomBox()
window.show_all()
Gtk.main()

输出

解释

代码初始化GTK库并导入Gtk模块。定义CustomBox类,带有窗口标题和默认大小。“destroy”信号与Gtk.main_quit函数耦合,用于优雅地关闭窗口。水平Gtk.Box hbox容纳水平部件,而垂直Gtk.Box vbox容纳垂直部件。生成另外两个GTK Label3和label4部件。

第一个文本为“GTK 教程”,第二个文本为“尝试调整窗口大小”。

使用window.show_all()显示CustomBox对象(window)和所有部件。Gtk.main()启动主要的GTK循环,它处理用户交互和事件。

输出显示一个自定义窗口,其中水平Gtk标签分组在盒子样式中。垂直GTK盒子,其中两个标签并排放置。两个标签叠加在一个盒子上。

最大化窗口时,标签会更新。

结论

使用GTK+3通过在窗口内使用盒子布局对部件进行分组来创建用户友好的界面。它具有许多有用的部件和资源,对于开发复杂的跨平台GUI界面非常重要。本文展示了如何创建一个基本的GTK应用程序以及如何使用盒子布局部件。

更新于:2023年8月9日

1K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.