Python で GTK アプリケーションを開発しようとしていますが、gtk.TreeStore
. 私の主な問題: 私はすでにいくつかの JSON を解析しており、基本的に Python リストと 2 種類のオブジェクトである独自のデータ構造を持っています。コレクションだけでなく、リストにも表示される可能性があります)。
私はすでに a の基本的な使用法に精通しており、TreeStore
アイテムを画面に正しくレンダリングすることができました。treestore は gobject 型しか格納できないという事実にどう対処すればよいかわかりません (gobject 型システムについてよく知らないので、この時点ではよくわかりません)。C のドキュメントには、次の (PixBuf を除く) 基本型がリストされています。これらは挿入可能で、Python データ型に自動的にマップされます。
例として、gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); それぞれ int、string、GdkPixbuf 型の 3 つの列を持つ新しい GtkTreeStore を作成します。
さらに、任意のGType
. ドキュメントからのリンクは、この段落を直接指しています。
登録された型の一意の識別子を表す数値。
このトピックに関する私の調査はここで終わります。Google はほとんどが GTK 2.x のチュートリアルであり、str
andint
などを除く他のデータ型の挿入については何も見つけていません。
質問:
新しい GType (またはツリーストアへのカスタム データの挿入を可能にするその他のインターフェイス) を実装することは可能ですか? また、その方法は?
私はすでに派生しようとしましGObject
たが、役に立ちませんでした。2 つのデータ構造を同時に保持しないようにするにはどうすればよいですか?
つまり、解析結果と Treestore の重複情報です。混合コンテンツをどのように処理できますか?
私の場合、さまざまな追加情報を持つコレクションとアイテムがあります(ツリービューでは、子の有無にかかわらずノードとしてミラーリングされます)。
上記の質問が解決された場合、選択を処理するときの問題も解消されます。単純なタイプのようなものと一致したり、以前に挿入したアイテムと一致したりするstr
ことは困難です。int
そのような属性はキーである必要がありますが、解析結果をリストから検索することは効果的ではありません。
前もって感謝します!
質問に直接関係のない追加情報:
GTK 2TreeModel
のチュートリアルでこれを読むまで、カスタムを実装するのは実行可能な課題になると思いました。
ただし、これには代償が伴います。すべての改行文字を削除しない限り、有用なカスタム モデルを 1,000 行未満で作成することはまずありません。カスタム モデルを作成することは、思ったほど難しくはありません。特に、追跡するデータが大量にある場合は、より適切なコードが作成されるため、努力する価値は十分にあります。
これはまだ有効ですか?
http://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htmに出会いました。これは役に立ちますか? 多くのリソースは PyGTK 2.0 用です。非推奨。