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

在 Python 中封装 GObject

 2007-03-29 12:14:54 来源:WEB开发网   
核心提示: 生成包装器既然我们有了界面定义,那么就可以生成 Python 包装器的代码块,在 Python 中封装 GObject(3),这包括生成一个覆盖文件,覆盖文件告诉代码生成器要包括哪些头文件、模块名将是什么等等,Python 替我们处理了类型代码,因此我们忽略 *_get_type 函数;否

生成包装器

既然我们有了界面定义,那么就可以生成 Python 包装器的代码块。这包括生成一个覆盖文件。覆盖文件告诉代码生成器要包括哪些头文件、模块名将是什么等等。

通过使用 %% 将覆盖文件分成多个节(以 lex/yacc 样式)。这些节定义要包括哪些头文件、模块名、要包括哪些 Python 模块、要忽略哪些函数以及最后所有手工封装的函数。下面是 trayicon 模块的初始覆盖文件。

清单 1. trayicon.override

%%
headers
#include <Python.h>       
#include "pygobject.h"
#include "eggtrayicon.h"
%%
modulename trayicon          
%%
import gtk.Plug as PyGtkPlug_Type   
%%
ignore-glob
 *_get_type              
%%

让我们再次更详细地检查该代码:

headers

#include <Python.h>

#include "pygobject.h"

#include "eggtrayicon.h"

这些是在构建包装器时要包括的头文件。始终必需包括 Python.h 和 pygobject.h,当我们封装 eggtrayicon.h 时,我们也必需包括它们。

modulename trayicon

modulename 规范声明包装器将在什么模块中。

import gtk.Plug as PyGtkPlug_Type

这些是用于包装器的 Python 导入。请注意命名约定;对于要编译的模块,必须遵守它。通常,导入对象的超类就足够了。例如,如果对象直接从 GObject 继承,则使用:

import gobject.GObject as PyGObject_Type

ignore-glob

*_get_type

这是一个要忽略的函数名的 glob 模式(shell 样式的正则表达式)。Python 替我们处理了类型代码,因此我们忽略 *_get_type 函数;否则,将对它们进行封装。

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

Tags:Python 封装 GObject

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