神秘的GObject警告:断言`G_IS_OBJECT(object)'失败

5 python gtk pygtk gobject pygobject

当我运行我的GTK(Python GObject内省)应用程序时,我有一个警告,我无法弄清楚它的来源.当应用程序加载并且我正在填充GtkListStore时,在我第一次添加行之后,我收到以下警告:

/usr/lib/python2.7/site-packages/gi/types.py:44: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed
  return info.invoke(*args)
Run Code Online (Sandbox Code Playgroud)

其余的行追加而没有任何进一步的警告.实际上,它总是只被提升一次,总是在第一个要追加的项目上.但是,该行的实际内容似乎并不重要; 它无论如何都会提出警告.当程序完成加载时,当我在TreeView中浏览它们时,所有行似乎都没问题.

我的列表商店看起来像这样:

self.list_store = Gtk.ListStore(bool, str, str, str, str, str, str,
                                str, str, str, str, GdkPixbuf.Pixbuf,
                                str, str, str, object, Pango.Weight)
Run Code Online (Sandbox Code Playgroud)

最后几列是从关联的GtkTreeView中隐藏的,但警告发生在TreeView创建之前,所以我确定它来自ListStore.Needless说,我确信我传递的所有行都在正确的格式,因为,就像我说的那样,警告总是在第一行之后引发,无论我先添加哪一行.

有谁知道是什么原因引起的?它并没有阻止我的应用程序运行,所以它不是紧急情况,但我宁愿不让它为最终用户吐出警告.


编辑:我确认使用Python的-W all命令行参数,实际上是为所有行引发了警告.

我尝试append()使用pdb但是,gi当它尝试设置包含GdkPixbuf的列的值时,它会陷入代码循环中,所以我从未真正看到调试程序时出现的警告.我的猜测是Pixbuf导致问题,但我不知道如何更改它以摆脱警告.Pixbuf在TreeView中正确呈现,所以我不确定发生了什么.

Cod*_*e92 5

对此进行疯狂的猜测......

PyGTK 似乎非常擅长制造奇怪的错误——尤其是那些让我们白费力气的错误。我已经遇到了六七个不同的此类错误,这些错误最终只是掩盖了另一个问题……有时甚至是一个不相关的问题。

尽管如此,运行谷歌搜索显示这已经被记录下来,尽管可能还没有解决......?(一个这样的例子:https://bugs.launchpad.net/ubuntu/+source/jockey/+bug/814991

如果这没有引发任何错误,也许您应该编写一个 catch 语句来消除最终程序中的错误?