2011-06-19 13 views
2

私はTreeViewのデータベースから複数の行を表示しようとしていますが、下の図のようにいくつかのダミー行が表示されています。PyGTK TreeViewはListStoreから空白の行を表示します

Application Screenshot

class SettingsDialog(gtk.Dialog): 
    def __init__(self): 
     gtk.Dialog.__init__(self, "Server Settings", self, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) 

     # Instantiate ServerManager 
     self.server_manager = ServerManager() 

     # Create TreeStore for Server list 
     self.liststore = gtk.ListStore(str, str) 
     self.treeview = gtk.TreeView(self.liststore) 

     # Create TreeViewColumns to display data 
     cell = gtk.CellRendererText() 
     col = gtk.TreeViewColumn("Name") 
     col.pack_start(cell, True) 
     self.treeview.append_column(col) 

     cell = gtk.CellRendererText() 
     col = gtk.TreeViewColumn("URL") 
     col.pack_start(cell, True) 
     self.treeview.append_column(col) 

     self.vbox.pack_start(self.treeview) 

     self.resize(500,350) 
     self.set_position(gtk.WIN_POS_CENTER) 
     self.show_all() 

     self.load_server_list() 


    def load_server_list(self): 
     self.liststore.clear() 
     servers = self.server_manager.list() 
     for name, url in servers.iteritems(): 
       self.liststore.append([name, url]) 
     self.show_all() 

データはself.server_manager.list()から返されたが、完全リストストアに追加有効です。 CellRenderersに何か問題があるようですが、エラーを見つけることができませんでした。

答えて

4

列に属性マッピングを設定する必要があります。たとえば、cellrendererのテキストの値がツリービューセルに表示されます。これは、データモデルの値から取得されます(self.liststore)。値が取得されるモデルの列番号は、属性マッピングで指定されます。

## Take value for *text* attribute of the cell renderer from the model's 3rd column 
col = gtk.TreeViewColumn(title, cellrenderer, text=2) 
関連する問題