Re: [PyGObject] TreeView: Empty integer field or right aligned string
- From: Luca Bacci <luca bacci982 gmail com>
- To: "gtk-app-devel-list gnome org" <gtk-app-devel-list gnome org>
- Subject: Re: [PyGObject] TreeView: Empty integer field or right aligned string
- Date: Tue, 8 May 2018 14:20:24 +0200
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]