124bit
Окт. 23, 2008 18:51:37
у меня есть 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
hellslade
Окт. 23, 2008 19:09:49
wx.LC_SORT_ASCENDING и wx.LC_SORT_DESCENDING не подходят?
при добавлении элементов, они должны отсортироваться
124bit
Окт. 23, 2008 19:17:41
неее.. мне надо, чтоб когда нажимаеш на заголовок колонки оно сортировалось.. как обычно сортируется…
shiza
Окт. 23, 2008 20:16:30
давно не юзал 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
Окт. 23, 2008 20:29:58
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
shiza
Окт. 23, 2008 21:38:44
124bit
ууххх… йопт(( эт оч громоздко выходит…я так понял в сортировке надо взять все значения в таблице в список списков значений строк, далее сравнивать нужную по счету колонку с другими.. и при этом сортировать не списки а колонки.. а потом еще это все обратно забить в таблицу(( а как то по проще идей нету,? ^_^
Я думаю, что это можно написать примерно в 10 строк =)
У меня все проще было, так как в базе лежало, поэтому я просто добавлял к запросу выборки сортировку и усе.
124bit
Окт. 23, 2008 22:52:29
блин…я теперь тоже так думаю)) чето мне сначала страшным это показалось)