Я следовал руководству по python Gtk2. Существует возможность сортировать элементы 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_directory. Сортировка должна быть: сначала каталоги по алфавиту, а потом файлы по алфавиту.
Мне нужно адаптировать компаратор, потому что он может работать с двумя значениями: именами файлов и логическими значениями, если это каталоги или нет.
Я старался:
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
Это сначала сортирует каталоги - в случайном порядке, а затем файлы также в случайном порядке. Может ли кто-нибудь указать мне на мою ошибку?