0

我有一个最简单的 TreeView 示例,大部分是从basictreeview.py复制的,但更简单,但 TreeView 本身不会显示在顶层窗口内。怎么了:

import gtk

class Application(object):
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("Alignment Editor")
        self.window.set_default_size(1024, 768)
        self.window.connect("delete_event", lambda w,e: gtk.main_quit())

        self.row = ["a", "b", "c", "d", "e", "f", "g", "h"]
        self.store = gtk.ListStore(*[str]*len(self.row)) #create len(word) columns
        self.store.append(self.row)

        self.treeview = gtk.TreeView(self.store)
        self.treeview.set_reorderable(True)
        self.window.add(self.treeview)
        self.window.show_all()

if __name__ == "__main__":
    Application()
    gtk.main()
4

1 回答 1

1

您缺少 TreeviewColumns 和 CellRenderers,我相信最小的例子是(抱歉是 GTK3,但它与 Pygtk 相同)

from gi.repository import Gtk

class Application(object):
    def __init__(self):
        self.window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
        self.window.set_title("Alignment Editor")
        self.window.set_default_size(200, 150)
        self.window.connect("delete_event", lambda w,e: Gtk.main_quit())

        self.row = ["a", "b"]
        self.store = Gtk.ListStore(*[str]*len(self.row)) #create len(word) columns
        self.store.append(self.row)

        cra = Gtk.CellRendererText()
        twcolumna = Gtk.TreeViewColumn("Column a")
        twcolumna.pack_start(cra, True)
        twcolumna.add_attribute(cra, 'text', 0)

        crb = Gtk.CellRendererText()
        twcolumnb = Gtk.TreeViewColumn("Column b")
        twcolumnb.pack_start(crb, True)
        twcolumnb.add_attribute(crb, 'text', 1)

        self.treeview = Gtk.TreeView(self.store)

        self.treeview.append_column(twcolumna)
        self.treeview.append_column(twcolumnb)

        self.treeview.set_reorderable(True)
        self.window.add(self.treeview)
        self.window.show_all()

if __name__ == "__main__":
    Application()
    Gtk.main()
于 2013-10-02T09:15:12.173 回答