I'm writing an app using Gtk/PyGI, and I need to create a sidebar with a Nautilus-like tree.
However, Gtk refuses to cooperate with me. I tried both with Glade and GtkBuilder (creating the GtkTreeStore with one gchararray
column) and with this code:
def create_widgets(self):
self.hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL)
self.add(self.hbox)
self.treestore = Gtk.TreeStore(str)
self.treeview = Gtk.TreeView(self.treestore)
self.treestore.append(["Item 1"])
self.treestore.append(["Item 2"])
self.hbox.pack_start(self.treeview, True, True, 0)
Both versions raise a TypeError: Expected Gtk.TreeIter, but got StructMeta
starting at the first self.treestore.append()
in my code and trickling down through the library's files.
I thought it's because GtkTreeStore's .append
also takes a GtkTreeIter, but if I pass something like "0" as the first argument nothing changes, if I pass something like self.treestore.get_iter("0")
it errors out saying it's an invalid tree path, and if I pass None
it works, but shows an empty window.
I tried replacing the GtkTreeStore with a GtkListStore. The result doesn't error out - instead, it shows the very same empty window as before.
So, what am I doing wrong? I went through the docs time and time again, but I still can't figure it out.