Почему моя функция сортировки GtkTreeView получает строку с None?
Я создал gtk.TreeView
с gtk.TreeStore
, Один столбец содержит отформатированные суммы в долларах, и я настроил сортировку по этому столбцу следующим образом:
def sortmon(model, i1, i2):
v1 = model[i1][COL_MONEY]
v2 = model[i2][COL_MONEY]
return cmp(float(v1.replace("$","").replace(",","")),
float(v2.replace("$","").replace(",","")))
self.hsModel.set_sort_func(COL_MONEY, sortmon)
Это прекрасно работает, за исключением того, что иногда, когда я добавляю строку, я получаю:
stderr : INFO Traceback (most recent call last):
stderr : INFO File "C:\Users\DrClaud\bumhunter\gui\widgets\replay\ReplayWidget.py", line 141, in sortpot
stderr : INFO float(v2.replace("$","").replace(",","")))
stderr : INFO AttributeError: 'NoneType' object has no attribute 'replace'
Я сделал больше распечаток, и кажется, что когда я вставляю строку, один из model[i1][x]
или же model[i2][x]
для любого х будет Нет. Я уверен, что я не вставляю строку с None
элементы в нем.. так что происходит?
1 ответ
Если вы добавляете строку в отсортированную модель, GTK+ автоматически ищет подходящую позицию для нее, и, таким образом, ваша функция сортировки вызывается, если она находится в этом столбце. Вы должны либо справиться None
специально или указать начальные значения в append()
звоните, как:
model.append (parent, [x, y, z])
Последнее, конечно, решает проблему, только если вы можете указать что-то более подходящее, чем None
пустая строка, возможно.