hi
print dir(self.list)
do not show any methods from wxColumnSorterMixin
I am not able to get data from self.itemDataMap
on col click! print "from wxColumnSorterMixin: ", self.itemDataMap
show nothing :((( why?
I am add data to self.itemDataMap doing: self.list.itemDataMap[x] = (rows[x][0], rows[x][1], rows[x][3], rows[x][4], rows[x][6])
But print "from App: ", self.list.itemDataMap show my data!
Using subclass at xrc I have always add module name before class name?
Thank You!
PhoneBook.py:
#!/usr/bin/env python
from wxPython.wx import *
from wxPython.xrc import *
···
#----------------------------------------------------------------------------
class wxColumnSorterMixin:
def __init__(self):
list = self.GetListCtrl()
EVT_LIST_COL_CLICK(list, list.GetId(), self.OnColClick)
def OnColClick(self, evt):
print "from wxColumnSorterMixin: ", self.itemDataMap
#----------------------------------------------------------------------------
class EListCtrl(wxListCtrl, wxColumnSorterMixin):
def __init__(self):
value = wxPreListCtrl()
self.this = value.this
self.itemDataMap = {}
wxColumnSorterMixin.__init__(self)
def GetListCtrl(self): return self
class App(wxApp):
def OnInit(self):
self.res = wxXmlResource("PhoneBook.xrc")
self.InitFrame()
self.frame.Show(True)
self.SetTopWindow(self.frame)
self.keepGoing = True
return True
def InitFrame(self):
self.frame = self.res.LoadFrame(None, "MainFrame")
# init Button
EVT_BUTTON(self.frame, XRCID("FindButton"), self.OnFindButton)
# init ListCtrl
self.list = XRCCTRL(self.frame, "ResultsListCtrl")
self.list.InsertColumn(0, "Phone")
self.list.InsertColumn(1, "Name")
self.list.InsertColumn(2, "Street")
self.list.InsertColumn(3, "House")
self.list.InsertColumn(4, "Appartment")
def OnFindButton(self, event):
rows = [('a','b','c','d','e','f','g'),('b','c','d','e','f','g','h'),('c','d','e','f','g','h','i')]
self.list.itemDataMap = {}
for x in range(len(rows)):
self.list.InsertStringItem(x, rows[x][0])
self.list.SetStringItem(x, 1, rows[x][1])
self.list.SetStringItem(x, 2, rows[x][3])
self.list.SetStringItem(x, 3, rows[x][4])
self.list.SetStringItem(x, 4, rows[x][6])
self.list.SetItemData(x, x)
self.list.itemDataMap[x] = (rows[x][0], rows[x][1], rows[x][3], rows[x][4], rows[x][6])
print "from App: ", self.list.itemDataMap
print dir(self.list)
def main():
app = App()
app.MainLoop()
if __name__ == "__main__":
main()
PhoneBook.xrc:
<object class="wxListCtrl" subclass="PhoneBook.EListCtrl" name="ResultsListCtrl">
<style>wxLC_REPORT|wxSUNKEN_BORDER</style>
</object>
--
WBR, sector119