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)
残りの行は、それ以上の警告なしに追加されます。実際、これは常に1回だけ発生し、常に最初に追加されるアイテムで発生します。ただし、行の実際の内容は重要ではないようです。何があっても警告を発します。プログラムのロードが完了すると、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で正しくレンダリングされるため、何が起こっているのかわかりません。