2012-01-19 11 views

答えて

3

モデルの列の制限なしで、必要な数の列をツリービューに追加できます。あなたが必要とするデータがモデルに存在しない場合は、列のコールバックを設定することができます。

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() 
+0

ありがとう、それは私が必要なものです。あなたがネイティブにgtkでモデルとtreeviewの間に多対1の関係を定義することはできません。私はこれがデータベース情報を表現するのに役立つだろうと思っていたでしょう。 –

+0

私はgtkの上にビルドされたライブラリがあると思いますが、[kiwi](http://www.async.com.br/projects/kiwi/)は1つですが、のデータベース。 –

+0

そのおかげで@mg私はキウイをチェックします –

0

gtk.TreeViewオブジェクトにはappend_columnメソッドがあります。したがって、プログラム可能なようにgtk.TreeViewに列を追加できます。

しかし、既存のモデルに新しい列を追加する方法や、複数のモデルを同じ方法で使用する方法はわかりません。gtk.TreeViewとにかく、追加の列を持つ新しいモデルを作成し、前のモデルの内容をコピーして、新しいモデルを使用するようにツリービューを更新することができます。

0

はタイトルに質問に答えるために:いいえ、あなたはGtkTreeModelに列を追加することはできません、それがされています後作成した。

関連する問題