To have empty int cells, you can either

   - use strings, instead of ints, in ListStore as you said
   - make place for a third value in ListStore, of type bool, and control
   the "visible" property of the first Cell Renderer with it (see code below)
   - Use Cell Data Func for ultimate flexibility

And here's the code

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class TreeView(Gtk.TreeView):
    def __init__(self, model):
        Gtk.TreeView.__init__(self, model)
        col_a = Gtk.TreeViewColumn('int',
                                   Gtk.CellRendererText(),
                                   text=0,
                                   visible=2)
        self.append_column(col_a)
        col_b = Gtk.TreeViewColumn('str',
                                   Gtk.CellRendererText(),
                                   text=1)
        self.append_column(col_b)


class TreeModel(Gtk.ListStore):
    def __init__(self):
        Gtk.ListStore.__init__(self, int, str, bool)

        self.append([1, '111', True])
        self.append([0, 'Hi!', False])
        self.append([3, '3',   True])


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()

Luca

2018-05-08 12:08 GMT+02:00 Luca Bacci <luca.bacci...@gmail.com>:

> Hello!
>
> You can achieve what you want with the "xalign" property of CellRenderers
>
> col_b = Gtk.TreeViewColumn('str',
>                            Gtk.CellRendererText(xalign=1),
>                            text=1)
>
> xalign takes a value between 0 and 1.
> xalign=0 -> left-justified
> xalign=1 -> right-justified
>
> Luca
>
>
> 2018-05-06 12:01 GMT+02:00 <c.bu...@posteo.jp>:
>
>> X-Post: https://stackoverflow.com/q/50194505/4865723
>>
>> I want to have in a Gtk.TreeView
>>
>>     - empty cells in a "int row" of a TreeView
>>     - or (as a workaround) a right aligned "string row"
>>
>> There is a screenshot and example code in the StackOverflow question
>> linked in the first line of this post.
>>
>> The problem is
>>
>>     - When I give 'None' to a 'int row' a '0' is displayed. I would
>>       expect an empty cell. I want that cell to be
>>       absolute empty.
>>
>>     - A workaround is to use strings instead of int and just display the
>>       numbers as strings doing str(int).
>>       But then the content of each cell is left aligned by default.
>>       I tried to modify that. But this also has no effect.
>>
>> I attached the full example.
>> _______________________________________________
>> gtk-app-devel-list mailing list
>> gtk-app-devel-list@gnome.org
>> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>>
>
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to