Re: [PyGObject] TreeView: Empty integer field or right aligned string
- From: Luca Bacci <luca bacci982 gmail com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: [PyGObject] TreeView: Empty integer field or right aligned string
- Date: Wed, 9 May 2018 19:37:52 +0200
in python you can do
def cell_data_func(self, tree_column, cell, tree_model, iter, data):
if tree_column is self.col_a:
# code
else if tree_column is self.col_b:
# code
see How do I check if two variables reference the same object in Python?
<https://stackoverflow.com/questions/3647546/how-do-i-check-if-two-variables-reference-the-same-object-in-python>
you have make col_a and col_b class members
But I think it's better to just write two functions:
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Pango
class TreeView(Gtk.TreeView):
def __init__(self, model):
Gtk.TreeView.__init__(self, model)
cell_a = Gtk.CellRendererText()
col_a = Gtk.TreeViewColumn('int',
cell_a)
col_a.set_cell_data_func(cell_a, self.func_a, None)
self.append_column(col_a)
cell_b = Gtk.CellRendererText()
col_b = Gtk.TreeViewColumn('str',
cell_b)
col_b.set_cell_data_func(cell_b, self.func_b, None)
self.append_column(col_b)
def func_a(self, tree_column, cell, tree_model, tree_iter, data):
cur_value = tree_model[tree_iter][0]
if cur_value == 0:
cell.set_property('text', '')
else:
cell.set_property('text', str(cur_value))
def func_b(self, tree_column, cell, tree_model, tree_iter, data):
cell.set_property('text', tree_model[tree_iter][1])
class TreeModel(Gtk.ListStore):
def __init__(self):
Gtk.ListStore.__init__(self, int, str)
# int and string
self.append([1, '111'])
# first column "empty" but displayed as "0"
# second column "empty" (but a workaround)
self.append([0, 'Hi!'])
# RIGHT alignment (second column) not working
self.append([3, '3'])
class Window(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='Mein Gtk-Fenster')
self.set_default_size(400, 300)
self.model = TreeModel()
self.view = TreeView(self.model)
# layout
self.layout = Gtk.Grid()
self.add(self.layout)
self.layout.attach(self.view, 0, 1, 1, 1)
self.connect('destroy', Gtk.main_quit)
self.show_all()
if __name__ == '__main__':
win = Window()
Gtk.main()
2018-05-08 22:09 GMT+02:00 <c buhtz posteo jp>:
On 2018-05-08 14:20 Luca Bacci <luca bacci982 gmail com> wrote:
- Use Cell Data Func for ultimate flexibility
That is the signature
Gtk.TreeCellDataFunc(tree_column, cell, tree_model, iter, data)
But how do I know which cell (row and column) is affected?
I can extrat the row with tree_model[iter] but not the column.
"tree_column" is of type Gtk.TreeViewColumn but doesn't even know its
position (first, second, ... column). There is no integer indicating
that.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]