question about wxpython CtrlList event binder: wx.EVT_LIST_ITEM_RIGHT_CLICK
Kent
kent.yuan at gmail.com
Tue Apr 21 17:59:18 EDT 2009
Hi Mike,
thx for the wxpython maillist link, I will give it a shot. But I would
like to paste the code snippet here as well, hope it can tell
sufficient information. (I added some comments in the class. ) Thank
you.
class TagListCtrl(wx.ListCtrl):
'''
Tag list ListCtrl widget
'''
def __init__(self,parent,id):
# this 'images' is not important, just icons
images = (myGui.ICON_TAG_CUSTOM,
myGui.ICON_TAG_ALL,myGui.ICON_TAG_SEARCH, myGui.ICON_TAG_TRASH,
myGui.ICON_TAG_FAV)
# so the listctrl is in REPORT MODE
wx.ListCtrl.__init__(self,parent,id,style=wx.LC_REPORT|
wx.LC_HRULES| wx.LC_SINGLE_SEL)
#here are some property value init..
self.SetName(myGui.TAG_LIST_NAME)
self.parent = parent
self.mainFrm = self.GetTopLevelParent() # main Frame
il = wx.ImageList(24,24)
for image in images:
il.Add(wx.Bitmap(image,wx.BITMAP_TYPE_PNG))
self.InsertColumn(0,'Tags')
self.AssignImageList(il,wx.IMAGE_LIST_SMALL)
#popup menu
self.popmenu = None
# bind the events
self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelect) #selected,
e.g. left click
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.onTagMgmt,self)
# right click, HERE COMES THE PROBLEM
#this function load the item data into the List
self.loadTags()
#this is the function
def onTagMgmt(self,event):
tagId = event.GetData()
# following codes are omitted. just some business logic stuff.
checking the tagId, making decision of showing popup menu items...
Kent
On Apr 21, 11:24 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
> On Apr 21, 3:35 pm, Kent <kent.y... at gmail.com> wrote:
>
> > Hi there,
>
> > I wrote a desktop application with wxPython2.8. And got a problem.
> > Hope here someone can give some hint. Thanks in advance.
>
> I recommend joining the wxPython mailing list and posting there. The
> guys there are great and can probably help you out. Seehttp://wxpython.org/maillist.php
>
>
>
>
>
> > There was a ListCtrl (lc) in my GUI, and it was a bit long, so that
> > there would be some blank space below ("empty area") in case there
> > were only a few items.
>
> > I bind a function on the event wx.EVT_LIST_ITEM_RIGHT_CLICK, when user
> > rightclick on the lc item, my function was triggered, and open a popup
> > menu.
>
> > Depends on the item user clicked, the menu items can be different. I
> > checked the event.getData(), to decide which menu item will show to
> > user. That is, if user right click on the "empty area", the
> > event.getData() will be 0. I wrote the appl. under Linux, and tested,
> > it worked as what I expected.
>
> > However, today someone reported a bug, said, under Windows XP, right
> > clicking on the items of lc, it works fine, but if on the "empty area"
> > of the lc, nothing happened, no popup menu. I tested under WINXP, the
> > function was not triggered at all when I right-clicked on the "empty
> > area".
>
> > I tried to bind wx.EVT_RIGHT_DOWN(UP) to the lc, but the function
> > cannot be triggered under Linux. any suggestion?
>
> > Thanks
>
> > regards,
>
> > Kent
>
> If you join the wxPython list, they'll probably ask for a small
> runnable sample. Here's some instructions for how to do that:http://wiki.wxpython.org/MakingSampleApps
>
> It would be good to know what mode you are using for your ListCtrl.
> List view, report, icon or what? The demo doesn't have any white space
> at the end, so I can't test this easily. Are you using a sizer to hold
> the widget?
>
> - Mike
More information about the Python-list
mailing list