我跟着python Gtk2 tutorial。可以根据自定义分隔符函数对treeView或listView元素进行排序:
def compare(model, row1, row2, user_data):
sort_column = 0
value1 = model.get_value(row1, sort_column)
value2 = model.get_value(row2, sort_column)
# here beginns the interresting part
if value1 < value2:
return -1
elif value1 == value2:
return 0
else:
return 1
在我的treeStore模型中,我存储了文件名和is\u目录bool值。排序应该是:先按字母顺序排列目录,然后按字母顺序排列文件。你知道吗
我需要调整comparator,因为它可以处理两个值:文件名和bool值(如果它们是或不是目录)。你知道吗
我试过:
def compareFileListEntries(self, fileListModel, row1, row2, user_data):
name1 = fileListModel.get_value(row1, 1)
name2 = fileListModel.get_value(row2, 1)
isDir1 = fileListModel.get_value(row1, 2)
isDir2 = fileListModel.get_value(row2, 2)
if isDir1 < isDir2:
return -1
elif isDir1 > isDir2:
return 1
else:
if name1 < name2:
return -1
elif name1 == name2:
return 0
else:
return 1
这将首先对目录进行排序-按随机顺序,然后对文件也进行随机排序。有人能指出我的错误吗?你知道吗
问题在另一部分。上面的代码基本上没问题。我做了一些修改,所以排序工作如下:目录优先,字母顺序,不区分大小写。这些名称存储在我的treeStore模型的第一列中,isDirectory值存储在第二列中。以下是我结束时的代码:
相关问题 更多 >
编程相关推荐