如何在向后兼容的代码中使用GLib.io_add_watch?

时间:2014-02-27 21:55:40

标签: python linux gtk pygobject

在Ubuntu 14.04下运行一些较旧的Python + GTK3代码时,出现了以下弃用警告:

PyGIDeprecationWarning: io_add_watch is deprecated; use GLib.io_add_watch instead
/usr/lib/python3/dist-packages/gi/overrides/GLib.py:655: PyGIDeprecationWarning: Calling io_add_watch without priority as second argument is deprecated
/usr/lib/python3/dist-packages/gi/overrides/GLib.py:666: PyGIDeprecationWarning: Calling io_add_watch with priority keyword argument is deprecated, put it as second positional argument

这来自调用GObject.io_add_watch()的行。

http://www.piware.de/2012/11/pygobject-3-7-2-released/http://lazka.github.io/pgi-docs/api/GLib_2.0/functions.html?highlight=add_watch#GLib.io_add_watch来看,GLib.io_add_watch()的参数配置文件与GObject.io_add_watch()不同。所以现在我想知道:

  1. 在Python + GTK3中在fd上设置I / O监视的正确方法是什么?使用哪个功能,使用什么参数配置文件?
  2. 如何以与旧系统兼容的方式编写代码,例如: Ubuntu 12.04?
  3. 在旧系统和新系统中有这种API经验的人都可以提供一些提示吗?

2 个答案:

答案 0 :(得分:0)

GLib.io_add_watch()已经存在了很长时间:在Ubuntu 12.04发布之前已经有很多了。所以正确的是使用它。

我认为除了优先级之外,函数签名非常相似:你应该使用GLib.PRIORITY_DEFAULT。

答案 1 :(得分:0)

弃用警告意味着正在使用的功能将在PyGObject的下一个主要版本中删除(目前还没有计划)。弃用警告仅出现在PyGObject的开发版本(奇数次要版本号)或使用-Wd Python命令行选项启用弃用警告时。

如果您需要保持与3.7.2之前的PyGObject版本的兼容性,那么最好的办法是继续使用适用于整个3.x系列的弃用版本:

GObject.io_add_watch(theFd, GLib.IO_IN, onReadable, priority=prio)

如果这在某些版本的PyGObject中不起作用,那么它是一个API中断,因此有一个错误,请在此处记录:

https://bugzilla.gnome.org/enter_bug.cgi?product=pygobject