from gi.repository import Gtk liststore = Gtk.ListStore(int) liststore.append([5]) liststore.append([10]) liststore.append([15]) treeview = Gtk.TreeView(model=liststore) spinrenderer = Gtk.CellRendererSpin() spinrenderer.set_property("editable", True) spinrenderer.set_property("adjustment", Gtk.Adjustment(0, 0, 100, 1, 10, 0)) column = Gtk.TreeViewColumn("Value", spinrenderer, text=0) treeview.append_column(column) win = Gtk.Window() win.connect("delete-event", Gtk.main_quit) win.add(treeview) win.show_all() Gtk.main()
from gi.repository import Gtk class CustomCellRendererSpin(Gtk.CellRendererSpin): def __init__(self): Gtk.CellRendererSpin.__init__(self) self.connect("edited", self.on_edited) def on_edited(self, widget, path, value): value = int(value) self.emit("edited", path, value * 2) liststore = Gtk.ListStore(int) liststore.append([5]) liststore.append([10]) liststore.append([15]) treeview = Gtk.TreeView(model=liststore) spinrenderer = CustomCellRendererSpin() spinrenderer.set_property("editable", True) spinrenderer.set_property("adjustment", Gtk.Adjustment(0, 0, 100, 1, 10, 0)) column = Gtk.TreeViewColumn("Value", spinrenderer, text=0) treeview.append_column(column) win = Gtk.Window() win.connect("delete-event", Gtk.main_quit) win.add(treeview) win.show_all() Gtk.main()In this example, a custom CellRendererSpin is created which doubles the value of any value inputted into the spin button. This is achieved by overriding the "edited" method and emitting the signal with the double value. The TreeView and spin button functionality is the same as in Example 1.