Форум сайта python.su
у меня есть wx.ListCtrl в котором постоянно что то меняется. Мне надо сделать так, чтоб его можно было в любое время сортировать, но я не очень понимаю концепцию сортировки..
я создаю класс
class SortedListCtrl(wx.ListCtrl, ColumnSorterMixin):
в ините которого
def __init__(self,parent):
wx.ListCtrl.__init__(self,parent, 8,pos=(10,70),size=(400,200), style=wx.LC_REPORT |wx.LC_HRULES | wx.LC_VRULES)
ColumnSorterMixin.__init__(self, 4)
self.itemDataMap = {}
и в котором есть функция
def GetListCtrl(self):
return self
далее его создаю и из потоков в нем постоянно что то меняется.
я не очень понимаю, что такое self.itemDataMap, но ставлю его ={} так как изначально у меня listctrl пустой… правильно,?
далее мне надо что то сделать, а именно как я понял перед сортировкой задать self.my_list_ctrl.SetItemData( ) .. а что это такое, что оно делает, где его задавать и какие ему кидать параметры - понять не могу(
как реализовать то что я хочу,? :D
Отредактировано (Окт. 23, 2008 18:56:41)
Офлайн
wx.LC_SORT_ASCENDING и wx.LC_SORT_DESCENDING не подходят?
при добавлении элементов, они должны отсортироваться
Офлайн
неее.. мне надо, чтоб когда нажимаеш на заголовок колонки оно сортировалось.. как обычно сортируется…
Офлайн
давно не юзал WX, сейчас заглянул в свой старый проект, где есть сортировка. Там у меня сделано довольно тупо, но мож поможет в крайнем случае:
Обычный self.lc = wx.ListCtrl()
И есть привязка клика по колонке к функции сортировки и перерисовки
self.lc.Bind(wx.EVT_LIST_COL_CLICK, self.sort_click, self.lc)
def sort_click(self, evt):
col = evt.GetColumn()
#сортировка….
Офлайн
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
Офлайн
124bitЯ думаю, что это можно написать примерно в 10 строк =)
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
Отредактировано (Окт. 23, 2008 21:47:29)
Офлайн
блин…я теперь тоже так думаю)) чето мне сначала страшным это показалось)
Офлайн