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