Re: [PyGObject] TreeView: Empty integer field or right aligned string



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 bacci982 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 buhtz 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





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]