PyGTK TreeView показывает пустые строки из ListStore - PullRequest
4 голосов
/ 19 июня 2011

Я пытаюсь показать несколько строк из базы данных в TreeView, но все, что я получаю, это несколько фиктивных строк, как вы можете видеть на изображении ниже.

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, но я не смог найти ошибку.

1 Ответ

4 голосов
/ 20 июня 2011

Вы должны установить отображение атрибута в столбце. Например, значение атрибута text 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)
...