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

当我运行我的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)

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

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

self.list_store = Gtk.ListStore(bool,str,GdkPixbuf.Pixbuf,object,Pango.Weight)

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

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

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

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

最佳答案
对此疯狂猜测……

PyGTK似乎在创造奇怪的错误方面非常有才华 – 特别是那些让我们疯狂追逐的错误.我已经打了六到七个不同的错误,最终只是掩盖了另一个问题……有时甚至是一个无关的问题.

同样,运行谷歌搜索显示这已被记录,但可能没有解决……? (一个这样的例子:https://bugs.launchpad.net/ubuntu/+source/jockey/+bug/814991)

如果这没有抛出任何错误,也许你应该编写一个catch语句来解决最终程序中的错误

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...