WEB开发网
开发学院软件开发Python 在 Python 中封装 GObject 阅读

在 Python 中封装 GObject

 2007-03-29 12:14:54 来源:WEB开发网   
核心提示: 为了演示该过程,我将封装 EggTrayIcon ,在 Python 中封装 GObject(2),它是用于在通知区中抽象表示图标的 GTK+ 窗口小部件,该库在 GNOME CVS 中,所以我们不需编辑它,注:该文件不是特定于 Python 的,位于 libegg 模块,在本文的结尾

为了演示该过程,我将封装 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 代码。

要生成初始定义文件,我们如下调用 h2def : python /usr/share/pygtk/2.0/codegen/h2def.py eggtrayicon.h > trayicon.defs

注:如果没有将 h2def.py 安装在 /usr 下,则必须更改该路径以指向它所在的地方。

如果我们现在查看已生成的定义文件,它应该具有某些意义。该文件中含有类 EggTrayIcon 的定义、构造函数以及方法 send_message 和 cancel_message 。该文件没有任何明显错误,我们不想除去任何方法或字段,所以我们不需编辑它。注:该文件不是特定于 Python 的,其它语言绑定也可以使用它。

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 封装 GObject

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接