add gridview

This commit is contained in:
Taiko2k
2023-05-10 20:12:09 +12:00
parent 3f4b83e7a5
commit d952001afe
3 changed files with 119 additions and 1 deletions

View File

@@ -3,7 +3,7 @@ import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw
from gi.repository import Gtk, Adw, Gio, GObject
class MainWindow(Gtk.ApplicationWindow):
@@ -22,6 +22,52 @@ class MainWindow(Gtk.ApplicationWindow):
self.box1.append(self.box2) # Put vert box in that box
self.box1.append(self.box3) # And another one, empty for now
self.grid1 = Gtk.GridView()
self.box3.append(self.grid1)
fruits = ["Banana", "Apple", "Strawberry", "Pear", "Watermelon", "Blueberry"]
class Fruit(GObject.Object):
name = GObject.Property(type=str)
def __init__(self, name):
super().__init__()
self.name = name
self.ls = Gio.ListStore()
for f in fruits:
self.ls.append(Fruit(f))
ss = Gtk.SingleSelection()
ss.set_model(self.ls)
self.grid1.set_model(ss)
factory = Gtk.SignalListItemFactory()
def f_setup(fact, item):
label = Gtk.Label(halign=Gtk.Align.START)
label.set_selectable(False)
item.set_child(label)
factory.connect("setup", f_setup)
def f_bind(fact, item):
item.get_child().set_label(item.get_item().name)
factory.connect("bind", f_bind)
self.grid1.set_factory(factory)
print(ss.get_selected_item().name)
def on_selected_items_changed(selection, position, n_items):
selected_item = selection.get_selected_item()
if selected_item is not None:
print(f"Selected item changed to: {selected_item.name}")
ss.connect("selection-changed", on_selected_items_changed)
# Add a button
self.button = Gtk.Button(label="Hello")
self.button.connect('clicked', self.hello)