首页 > 编程 > Python > 正文

在Python中封装GObject模块进行图形化程序编程的教程

2020-02-23 00:43:18
字体:
来源:转载
供稿:网友

Python 是用于编码图形界面的极佳语言。由于可以迅速地编写工作代码并且不需要费时的编译周期, 所以可以立即使界面启动和运行起来,并且不久便可使用这些界面。 将这一点与 Python 易于链接本机库的能力结合起来,就可以形成一个出色的环境。

gnome-python 是为 Python 封装 GNOME 及其相关库的软件包。 这使您能够用 Python 编写外观与核心 GNOME 应用程序完全相同的应用程序,而所花的时间只是用 C 编写该应用程序所花的一部分。

然而,不用 C 进行编程会有一个缺点。大多数 GNOME 都是用 C 编写的,对于要在 Python 中使用的窗口小部件,必须将它们封装。 对于知道封装过程如何工作的人来说,这是一个快速任务,但它不是自动的, 除非窗口小部件属于核心 GNOME 库或者至少非常有用,否则将不会对它们进行封装。C 程序员可能必须编写更复杂的代码,但它们确实先做了这一步!

但并不一定是那样!虽然从传统上讲封装窗口小部件过程这一技术只有极少数人才知道,但它并不真的那么难。 如果您在发现新的窗口小部件时可以将它们封装,那么您就可以立刻在 Python 程序中使用它们。

本文将描述如何封装用 C 编码的 GObject(所有 GTK+ 窗口小部件和许多相关对象的最终基类), 以便可以从 Python 代码使用它。假设您的机器上安装了 gnome-python V1.99.x(如果没有安装, 请参阅 参考资料以获取链接)。如果您正在使用软件包,请确保安装了该开发软件包。 另外,还必须安装 Python 2.2 及其头文件。 假设您了解 Make、Python、GTK+ 2 和一些 C 方面的知识。

为了演示该过程,我将封装 EggTrayIcon ,它是用于在通知区中抽象表示图标的 GTK+ 窗口小部件。 该库在 GNOME CVS 中,位于 libegg 模块。在本文的结尾,我们将有一个名为 trayicon 的本机 Python 模块,它包含一个 TrayIcon 对象。

开始时,获得 eggtrayicon.c 和 eggtrayicon.h(其链接在本文结尾的 参考资料一节中),然后将它们放入新目录中。 应该在 automake 环境中构建该源文件(但我们将不在这种环境中), 所以或者除去这些文件中的 #include <config.h> ,或者创建一个名为 config.h 的空文件,然后创建一个空的 makefile;接下来,我们将填充它。
创建界面定义

该对象封装过程的第一步是创建 trayicon.defs,该文件为该对象指定 API。 定义文件是用一种类 Scheme 的语言编写的,虽然对于小型界面来说它们很容易生成, 但对于大型界面或初学者来说编写它们会很吃力。

gnome-python 与名为 h2def 的工具一起提供。该工具将解析头文件并生成粗略的定义文件。 注:因为它实际上并没有解析 C 代码,而只是使用正则表达式, 所以它的确要求传统格式化的 GObject,并且不能正确解析奇特格式化的 C 代码。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表