当我运行我的 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, str, str, str, str, str,
str, str, str, str, GdkPixbuf.Pixbuf,
str, str, str, object, Pango.Weight)
最后几列从关联的 GtkTreeView 中隐藏,但警告发生在 TreeView 创建之前,所以我确定它来自 ListStore。不用说,我确定我传递的所有行都在正确的格式,因为就像我说的那样,警告总是在第一行之后提出,无论我先添加哪一行。
有谁知道是什么原因造成的?它不会阻止我的应用程序运行,所以它不是紧急情况,但我宁愿不让它向最终用户发出警告。
编辑:我使用 Python 的-W all
命令行参数确认警告实际上是针对所有行引发的。
我尝试使用该方法进入该append()
方法,但有趣的是,当它尝试设置包含 GdkPixbuf 的列的值时pdb
,它卡在代码中的循环中,因此在调试程序时我从未真正看到引发的警告。gi
我的猜测是 Pixbuf 导致了问题,但我不知道如何更改它以消除警告。Pixbuf 在 TreeView 中正确呈现,所以我不确定发生了什么。