在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()
不同。所以现在我想知道:
在旧系统和新系统中有这种API经验的人都可以提供一些提示吗?
答案 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中断,因此有一个错误,请在此处记录: