Skip to main content
 首页 » 编程设计

python之默认或以编程方式对 TreeView 中的列进行排序

2025年05月04日18lidabo

我知道我的问题已经在这里问过了:

How to Programmatically Sort TreeView

但是给出的链接没有任何链接,当我的窗口显示时我仍然无法对我的 TreeView 进行排序。

这是我的代码:

    treeview = Gtk.TreeView(model=liststore) 
    col = renderer_text('Nom', 1, store=liststore, sortable=True) 
    col.set_sort_order(Gtk.SortType.ASCENDING) #?????????????????????????? 
    treeview.append_column(col) 
 
def renderer_text(title, col, editable=False, store=None, sortable=None): 
    render = Gtk.CellRendererText() 
    if editable: 
        render.set_property('editable', True) 
        render.connect('edited', text_edited, store, col) 
    column = Gtk.TreeViewColumn(title, render, text=col) 
    if sortable: 
        column.set_sort_column_id(col) 
    return column 

set_sort_order(Gtk.SortType.ASCENDING) 会很棒,但在我的情况下它没有排序!

请您参考如下方法:

如果不查看您的更多代码,很难看出哪里出了问题,但我敢打赌与另一个问题中发生的事情完全相同:您需要将树模型包装在 Gtk.TreeModelSort.

sorted_model = Gtk.TreeModelSort(model=liststore) 
sorted_model.set_sort_column_id(1, Gtk.SortType.ASCENDING) 
treeview = Gtk.TreeView(model=sorted_model) 

请注意,在这种情况下,1 是模型列的索引,而不是可见的 TreeView 列。