All the examples I've seen of creating a hierarchical Gtk.Treestore use a file directory to populate the Store (see Create tree hierarchy using os.walk and gobject gtk+3). My data is the following:
['Power'],
['Power','Battery'],
['Power','PSU'],
['Power','Transformer'],
['Power','Transformer','Toroidal'],
['Power','Transformer','Toroidal','EI',],
['Power','Transformer','Toroidal','FI'],
['Resistor'],
['Resistor','Film'],
['Resistor','Metal'],
['Resistor','Potentiometer']
]
which would result in several levels of children.
This example from PyGObject : How could i get selected item in treeStore:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class TreeStore(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_default_size(200, 200)
self.connect("destroy", Gtk.main_quit)
# data known
mylist = ["1","2","3","4","5"]
scrolledwindow = Gtk.ScrolledWindow()
scrolledwindow.set_hexpand(True)
scrolledwindow.set_vexpand(True)
self.add(scrolledwindow)
treestore = Gtk.TreeStore(str)
# data known
ListOne = treestore.append(None, ["List One"])
ListTwo = treestore.append(None, ["List Two"])
ListThree = treestore.append(None, ["List Three"])
treeview = Gtk.TreeView()
treeview.set_model(treestore)
scrolledwindow.add(treeview)
cellrenderertext = Gtk.CellRendererText()
treeviewcolumn = Gtk.TreeViewColumn("Lists")
treeview.append_column(treeviewcolumn)
treeviewcolumn.pack_start(cellrenderertext, True)
treeviewcolumn.add_attribute(cellrenderertext, "text", 0)
for listItem in mylist:
treestore.append(ListOne, [listItem])
# data known:
treestore.append(ListTwo, ["foo"])
treestore.append(ListTwo, ["Fido"])
treestore.append(ListThree, ["Spot"])
window = TreeStore()
window.show_all()
Gtk.main()
does what I want, but as I've noted in the code the data are known. My data is generated from a database where the data are in a hierarchy and I've generated the data list from this:
ckey ccategory cparentkey
1 Library 0
2 Notes 0
3 Parts 0
16 Power 3
17 Battery 16
18 PSU 16
19 Resistor 3
20 Film 19
21 Metal 19
22 Potentiometer 19
50 Transformer 16
51 Toroidal 50
52 EI 51
53 FI 51
query and so I will not know what the data set will be. I've had several attempt over the last few months, but ended up using combobox instead. Can any one help me generate a treestore for my data. Thank you in advance.
I finally figured out the solution for anybody who needs it in the future, thanks to Bryan Oakley, who helped me with a Tkinter solution at: Hierarchy in TKinter Treeview. Here's a working example: