【问题标题】:PyGTK TreeView showing blank rows from ListStorePyGTK TreeView 显示 ListStore 中的空白行
【发布时间】:2013-01-23 13:00:38
【问题描述】:

我试图在 TreeView 中显示数据库中的几行,但我得到的只是一些虚拟行,如下图所示。

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 似乎有问题,但我找不到错误。

【问题讨论】:

    标签: python gtk gtktreeview


    【解决方案1】:

    您必须在列上设置属性映射。例如,cellrenderer 的 text 属性值将显示在 treeview 单元格中。它取自数据模型 (self.liststore) 上的值。在属性映射中指定取值的模型上的列号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多