Как установить начальную сортировку на TreeView - PullRequest
0 голосов
/ 18 июня 2019

У меня есть некоторые табличные данные, которые я хочу отобразить в таблице. И я хочу иметь возможность сортировать данные, нажимая на заголовки. Все это прекрасно работает, но я не могу понять, как установить начальную сортировку таблицы.

Когда я запускаю приведенный ниже пример, данные представляются в том порядке, в котором я их вставил в ListStore, это потому, что для сортировки еще не выбран конкретный столбец. Но я бы хотел, чтобы столбец C был выбран для сортировки при запуске приложения.

#!/usr/bin/env python                                                          
# -*- coding: utf-8 -*-                                                        

import gtk                                                                     

class TreeViewExample:                                                         
    def __init__(self):                                                        
        self.window = gtk.Window()                                             
        self.box = gtk.VBox()                                                  
        self.window.add(self.box)                                              

        data = [                                                               
                [ 10, 40, 17 ],                                                
                [ 20, 30, 14 ],                                                
                [ 30, 20, 15 ],                                                
                [ 40, 10, 19 ],                                                
                ]                                                              
        store = gtk.ListStore(int, int, int)                                   
        for row in data:                                                       
            store.append(row)                                                  

        treeView = gtk.TreeView()                                              
        treeView.set_model(store)                                              

        for i, col_name in enumerate('ABC'):                                   
            renderer = gtk.CellRendererText()                                  
            column = gtk.TreeViewColumn(col_name, renderer, text=i)            
            column.set_sort_column_id(i)                                       
            treeView.append_column(column)                                     

        self.box.pack_start(treeView)                                          
        self.window.show_all()                                                 

    def main(self):                                                            
        gtk.main()                       

if __name__ == "__main__":                                                     
    TreeViewExample().main()

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете программно щелкнуть столбец, используя column.clicked().

. В качестве отступления вы используете Gtk2, который устарел.Пожалуйста, рассмотрите возможность использования Gtk3 с

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