无论您是否对 C 特别精通,通过学习如何在 Python 中封装可供使用的 GTK+ C 模块,都使您能够在 Python 中根据您的需要随时使用用 C 编码的 GObject。
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 的语言编写的,虽然对于小型界面来说它们很容易生成,但对于大型界面或初学者来说编写它们会很吃力。
更多内容请看PCdog.com--Python编程 Python相关文章专题
