[wxPython-users] SetItemPyData() Clarification

Werner F. Bruhin werner.bruhin at free.fr
Mon Dec 4 13:07:54 PST 2006


Hi Rich,

Rich Shepard wrote:
>   With the following,
>
>   def setWidgets(self, msg):
>     nat = self.polTree.SetItemPyData(self.natID, self.appData.polNat)
>     print 'natID = ', self.natID, '\npolNat = ', self.appData.polNat
>
> I get this in the console:
>
> natID =  <wx._controls.TreeItemId; proxy of C++ wxTreeItemId instance at
> _e8ff4408_p_wxTreeItemId> polNat =  [(u'air_quality',), 
> (u'water_quality',), (u'slope_stability',),
> (u'habitats',), (u'ESA_species',), (u'wetlands',), (u'ground_water',),
> (u'hydrology',)]
>
>   natID is the ID for that child of the root of the wx.TreeCtrl(), but 
> the
> list in polNat does not appear in the tree. I've read the API doc and it
> appears that I'm calling Set.ItemPyData() correctly, at least as far 
> as the
> number of arguments and their format, but the list is not displayed.
>
>   Another clue stick, please.
Maybe you should have a glass of red instead ;-) , it just about always 
help me.

I think you misunderstand SetItemPyData, I believe it is like in a 
listctrl.SetClientData.

SetClientData associates ADDITIONAL information you want to have 
available later on for that item, it does not show in the listctrl.  I 
use this with listctrl to keep a db reference (i.e. a primary key), I do 
the same in combobox.

I haven't used the TreeCtrl but in a treeListCtrl I use "AppendItem" and 
"SetPyData", so looking at the doc for TreeCtrl I would guess you would 
use "AppendItem" and "SetItemPyData".

I am off for the day and anyhow my other glass of wine is waiting :-) .

Werner






More information about the wxpython-users mailing list