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

在 Python 中封装 GObject

 2007-03-29 12:14:54 来源:WEB开发网   
核心提示: 调优界面到目前为止,我们已经有了 send_message(int timeout, char *message, int length) 函数,在 Python 中封装 GObject(9),如果 EggTrayIcon 的 Python API 允许我们调用 send_message(

调优界面

到目前为止,我们已经有了 send_message(int timeout, char *message, int length) 函数。如果 EggTrayIcon 的 Python API 允许我们调用 send_message(timeout, message) ,那会更好。幸运的是,这并不太难。

完成这一步将再次涉及编辑 trayicon.override。这正是文件名的意义所在:该文件主要包含手工覆盖的包装器函数。比起演示一个示例并逐步说明其内容来,说明这些函数的工作原理要难得多,所以下面是手工封装的 send_message 代码。

清单 7. 手工覆盖

override egg_tray_icon_send_message kwargs
static PyObject*
_wrap_egg_tray_icon_send_message(PyGObject *self,
                 PyObject *args, PyObject *kwargs)
{
  static char *kwlist[] = {"timeout", "message", NULL};
  int timeout, len, ret;
  char *message;
  if (!PyArg_ParseTupleAndKeywords(args, kwargs,  
                   "is#:TrayIcon.send_message", kwlist,
                   &timeout, &message, &len))
    return NULL;
  ret = egg_tray_icon_send_message(EGG_TRAY_ICON(self->obj),
                   timeout, message, len);
  return PyInt_FromLong(ret);
}

为了清晰起见,我们再次将该清单逐行细化:

override egg_tray_icon_send_message kwargs

该行告诉代码生成器我们将提供 egg_tray_icon_send_message 的手工定义,它本身应该不会生成一个定义。

上一页  4 5 6 7 8 9 10  下一页

Tags:Python 封装 GObject

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