[wxPython] wxTreeCtrl EVT_TREE_KEY_DOWN

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[wxPython] wxTreeCtrl EVT_TREE_KEY_DOWN

Diane Jaquay
In wxPython, I'm using wxTreeCtrl.  I've setup a EVT_TREE_KEY_DOWN handler as
such:

EVT_TREE_KEY_DOWN( self, treeID, self.OnKeyDown )

In OnKeyDown, I have:

def OnKeyDown( self, event ):
        key = event.GetKeyEvent().GetKeyCode()
        if key == WXK_DELETE:
                print 'in here', type( event ), event.__class__, event.__dict__
                item_ctl = event.GetItem()
                item_ob  = self.tree.GetPyData( item_ctl )
                item_txt = self.tree.GetItemText( item_ctl )
                print item_ctl, item_ob, "'" + item_txt + "'"

But item_txt is always empty, and item_ob is always None, even though I'm on a
good tree node when I press key.  What might I be doing wrong here?  Any ideas?

The output from pressing the delete key is:

in here <type 'instance'> wxPython.controls2.wxTreeEventPtr {'this':
'_bfffe6f0_wxTreeEvent_p', 'thisown': 0}
<C wxTreeItemId instance at _848d998_wxTreeItemId_p> None ''

Thanks lots,
Dave




__________________________________________________
Do You Yahoo!?
Sign up for SBC Yahoo! Dial - First Month Free
http://sbc.yahoo.com




Reply | Threaded
Open this post in threaded view
|

Re: [wxPython] wxTreeCtrl EVT_TREE_KEY_DOWN

Niki Spahiev-2
David Jaquay wrote:

> In wxPython, I'm using wxTreeCtrl.  I've setup a EVT_TREE_KEY_DOWN handler as
> such:
>
> EVT_TREE_KEY_DOWN( self, treeID, self.OnKeyDown )
>
> In OnKeyDown, I have:
>
> def OnKeyDown( self, event ):
>         key = event.GetKeyEvent().GetKeyCode()
>         if key == WXK_DELETE:
>                 print 'in here', type( event ), event.__class__, event.__dict__
>                 item_ctl = event.GetItem()
>                 item_ob  = self.tree.GetPyData( item_ctl )
>                 item_txt = self.tree.GetItemText( item_ctl )
>                 print item_ctl, item_ob, "'" + item_txt + "'"
>
> But item_txt is always empty, and item_ob is always None, even though I'm on a
> good tree node when I press key.  What might I be doing wrong here?  Any ideas?

print item_ctl.IsOK() (or IsOk():^)

maybe you need self.tree.GetSelectedItem() instead.

HTH
Niki Spahiev





Reply | Threaded
Open this post in threaded view
|

Re: [wxPython] wxTreeCtrl EVT_TREE_KEY_DOWN

Robin Dunn
In reply to this post by Diane Jaquay
>
> But item_txt is always empty, and item_ob is always None, even though I'm
on a
> good tree node when I press key.  What might I be doing wrong here?  Any
ideas?

Not all events set all memebers of the event objects.  A quick peek in the
code shows that EVT_TREE_KEY_DOWN only sets m_evtKey.

--
Robin Dunn
Software Craftsman
http://wxPython.org  Java give you jitters?  Relax with wxPython!