Форум сайта python.su
0
у меня есть 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)
Офлайн
0
wx.LC_SORT_ASCENDING и wx.LC_SORT_DESCENDING не подходят?
при добавлении элементов, они должны отсортироваться
Офлайн
0
неее.. мне надо, чтоб когда нажимаеш на заголовок колонки оно сортировалось.. как обычно сортируется…
Офлайн
0
давно не юзал 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()
#сортировка….
Офлайн
0
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
Офлайн
0
124bitЯ думаю, что это можно написать примерно в 10 строк =)
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
Отредактировано (Окт. 23, 2008 21:47:29)
Офлайн
0
блин…я теперь тоже так думаю)) чето мне сначала страшным это показалось)
Офлайн