如何在TreeView上设置初始排序

时间:2019-06-18 07:32:01

标签: python gtk pygtk

我有一些要在表中显示的表格数据。我确实希望能够通过单击标题对数据进行排序。所有这些工作正常,但我不知道如何设置表的初始排序

在下面的示例中运行数据时,将按照将其插入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 :(得分:0)

您可以使用column.clicked()以编程方式click列。

顺便说一句,您正在使用不推荐使用的Gtk2。请考虑将Gtk3与

一起使用
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk