私はtreemodelから移入されたツリービューを持っています。gtkの既存のトレモデルに列を追加できますか?
私はツリービューに列を追加したいと思います。その列のデータを別のトレモデルから引き出すことは可能ですか、実行時に既存のトレモデルに列を追加することはできますか?
私はtreemodelから移入されたツリービューを持っています。gtkの既存のトレモデルに列を追加できますか?
私はツリービューに列を追加したいと思います。その列のデータを別のトレモデルから引き出すことは可能ですか、実行時に既存のトレモデルに列を追加することはできますか?
モデルの列の制限なしで、必要な数の列をツリービューに追加できます。あなたが必要とするデータがモデルに存在しない場合は、列のコールバックを設定することができます。
import gtk
def inIta(col, cell, model, iter, mymodel):
s = model.get_string_from_iter(iter)
niter = mymodel.get_iter_from_string(s)
obj = mymodel.get_value(niter, 0)
cell.set_property('text', obj)
model = gtk.ListStore(str)
model2 = gtk.ListStore(str)
view = gtk.TreeView(model)
rend1 = gtk.CellRendererText()
col1 = gtk.TreeViewColumn('hello', rend1, text=0)
view.append_column(col1)
rend2 = gtk.CellRendererText()
col2 = gtk.TreeViewColumn('ciao', rend2)
col2.set_cell_data_func(rend2, inIta, model2)
view.append_column(col2)
model.append(['hello world'])
model2.append(['ciao mondo'])
win = gtk.Window()
win.connect('delete_event', gtk.main_quit)
win.add(view)
win.show_all()
gtk.main()
gtk.TreeView
オブジェクトにはappend_column
メソッドがあります。したがって、プログラム可能なようにgtk.TreeView
に列を追加できます。
しかし、既存のモデルに新しい列を追加する方法や、複数のモデルを同じ方法で使用する方法はわかりません。gtk.TreeView
とにかく、追加の列を持つ新しいモデルを作成し、前のモデルの内容をコピーして、新しいモデルを使用するようにツリービューを更新することができます。
はタイトルに質問に答えるために:いいえ、あなたはGtkTreeModelに列を追加することはできません、それがされています後作成した。
ありがとう、それは私が必要なものです。あなたがネイティブにgtkでモデルとtreeviewの間に多対1の関係を定義することはできません。私はこれがデータベース情報を表現するのに役立つだろうと思っていたでしょう。 –
私はgtkの上にビルドされたライブラリがあると思いますが、[kiwi](http://www.async.com.br/projects/kiwi/)は1つですが、のデータベース。 –
そのおかげで@mg私はキウイをチェックします –