Gtk.TreeViewColumn unable to right align header and list contents

45 views Asked by At

I am displaying a database table in a grid using the following code:

        cols = [
            { "column": 0, "dbcolumn": "id", "dbtype": int, "title": "ID", "renderer": "text", "alignment": 0.0 },
            { "column": 1, "dbcolumn": "pocket_name", "dbtype": str, "title": "POCKET", "renderer": "text", "alignment": 0.0 },
            { "column": 2, "dbcolumn": "sort_code", "dbtype": str, "title": "SORT", "renderer": "text", "alignment": 0.0 },
            { "column": 3, "dbcolumn": "account_code", "dbtype": str, "title": "ACCOUNT", "renderer": "text", "alignment": 0.0 },
            { "column": 4, "dbcolumn": "PRINTF('%.2f', balance)", "dbtype": str, "title": "BALANCE", "renderer": "text", "alignment": 1.0 },
            { "column": 5, "dbcolumn": "STRFTIME('%d/%m/%Y', expires)", "dbtype": str, "title": "EXPIRES", "renderer": "text", "alignment": 0.0 }
        ]

        sql = "SELECT " + ", ".join(v["dbcolumn"] for v in cols) + " FROM pockets ORDER BY sort_order, pocket_name"
        store = Gtk.ListStore(*[k["dbtype"] for k in cols])

        c = db.conn.cursor()
        rc = c.execute(sql)

        for r in rc:
            store.append(r)

        data_list = Gtk.TreeView.new();

        for c in cols:

            renderer = Gtk.CellRendererText()   # text only
            renderer.set_alignment(c["alignment"], 1.0)

            column = Gtk.TreeViewColumn(c["title"], renderer, text=c["column"])
            column.set_sort_column_id(c["column"])
            column.set_resizable(True)
            column.set_alignment(c["alignment"]) # not working

            data_list.append_column(column)

        # Set the tree view model
        data_list.set_model(store)

        target.append(data_list)

The lines renderer.set_alignment(c["alignment"], 1.0) and column.set_alignment(c["alignment"]) both work individually, but when used together only the renderer part seems to work (i.e. column contents are correctly aligned, not the header.

What am I missing here?

1

There are 1 answers

0
garybarnes59 On

TreeViewColumn is deprecated from GTK 4 so moving to ColumnView.