Problem with wxTipWindow

Shine Anne m2ids2005 at gmail.com
Wed Jul 19 05:03:13 PDT 2006


Skipped content of type multipart/alternative-------------- next part -----=
---------
import wx
import sys
import  wx.lib.mixins.listctrl  as  listmix
import platform
import OpenDialog

ID_OPEN =3D 101
ID_REMOVE =3D 102

osType =3D platform.system()
if osType =3D=3D 'Linux':
	listSize =3D (215,80)
else:
	listSize =3D (355,400)

class TestListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
	def __init__(self, parent, ID, pos=3Dwx.DefaultPosition,
				 size=3DlistSize,style=3D0):
		wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
		listmix.ListCtrlAutoWidthMixin.__init__(self)

class BtnPanel(wx.Panel):
    def __init__(self, parent,log):
        self.parent =3D parent
        wx.Panel.__init__(self, parent, -1)
        self.index =3D 0
        tID =3D wx.NewId()
        self.mDisplayed=3D []
        =

        sizer =3D wx.BoxSizer(wx.VERTICAL)
        =

        mainSizer  =3D wx.BoxSizer(wx.HORIZONTAL)
        self.openBtn =3D wx.Button(self,ID_OPEN,label=3D"Open",size=3D(70,2=
1),)
        self.removeBtn =3D wx.Button(self,ID_REMOVE,label=3D"Remove",size=
=3D(70,21) )
        mainSizer.Add(self.openBtn,0,wx.TOP|wx.ALIGN_RIGHT|wx.ALL,2)
        mainSizer.Add(self.removeBtn,0,wx.TOP|wx.ALIGN_RIGHT|wx.ALL,2)
        sizer.Add(mainSizer,0,wx.TOP|wx.ALIGN_CENTER_VERTICAL|wx.ALL,5)
        =

        self.mlist =3D TestListCtrl(self, tID,
                                style=3Dwx.LC_REPORT                      =

                                | wx.BORDER_NONE
                                | wx.LC_EDIT_LABELS
                                | wx.LC_SORT_ASCENDING
                                )
                                =

        self.mlist.InsertColumn(0, " Name",wx.LIST_FORMAT_CENTER)
        self.mlist.InsertColumn(1, "Value",wx.LIST_FORMAT_CENTER,30)
        =

        self.mlist.SetColumnWidth(0,120)
        self.mlist.SetColumnWidth(1,130)
        #self.mlist.SetToolTip(wx.ToolTip("Ciao Ciao"))
        sizer.Add(self.mlist,0,wx.ALIGN_CENTER_VERTICAL|wx.ALL,5)
                                      =

        self.SetSizer(sizer)

        self.Bind(wx.EVT_BUTTON,self.OnOpen,id=3DID_OPEN)
        self.Bind(wx.EVT_BUTTON,self.OnRemove,id=3DID_REMOVE)
        self.mlist.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
        self.mlist.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.mlis=
t)
        self.mlist.Bind(wx.EVT_MOTION, self.OnMouseMove)
        =

        #self.mlist.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
        #self.mlist.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeave)
        =

        #self.mlist.SetToolTip(wx.ToolTip("This is a tooltip"))
        =

    def OnEnter(self,event):
        print "OnEnter"
        self.x =3D event.GetX()
        self.y =3D event.GetY()
        item, flags =3D self.mlist.HitTest((self.x, self.y))
        print "item =3D ",item
        if flags & wx.LIST_HITTEST_ONITEMLABEL:
            rect =3D wx.Rect(self.x,self.y, 20,20)
            tipWin =3D wx.TipWindow(self, "Desc of item 1")
            tipWin.SetBoundingRect(rect)
    =

    def OnLeave(self,event):
        print "On Leave"

    def OnPopulatemList(self,selectedmList):
        for i in range(len(selectedmList)):
            #mValue=3D selectedmList[i]
            mLabel =3D selectedmList[i]#[1]
            if not mLabel in self.mDisplayed:            =

                index =3D self.mlist.InsertStringItem(sys.maxint, '')
                self.mlist.SetStringItem(index, 0, str(mLabel))
                self.mDisplayed.append(mLabel)
            =

        #print "List of ms displayed =3D ",self.mDisplayed
        =

    def OnMouseMove(self,event):

        self.x =3D event.GetX()
        self.y =3D event.GetY()
        item, flags =3D self.mlist.HitTest((self.x, self.y))
        if flags & wx.LIST_HITTEST_ONITEMLABEL:#wx.LIST_HITTEST_ONITEM:\
            #rect =3D wx.Rect(self.x,self.y, 20,20)
            #self.tip  =3D wx.TipWindow(self, 'Rect: %s' % rect)
            #self.tip.SetBoundingRect(rect)
            #self.tip.Show()

            #if item =3D=3D0:
            rect =3D wx.Rect(self.x,self.y, 20,20)
            tipWin =3D wx.TipWindow(self.mlist, "Desc of item 1")
            tipWin.SetBoundingRect(rect)
                #tipWin.SetBoundingRect(wx.Rect(0,20,100,33))

    def OnOpen(self,evt):
        self.mDialog =3D OpenDialog.mListDialog(self,-1)
        self.mDialog.Show(1)
        =

    def OnRemove(self,evt):
        self.mlist.DeleteItem(self.currentItem)
        =

    def OnRightDown(self, event):
        self.x =3D event.GetX()
        self.y =3D event.GetY()
        #print "x, y =3D %s\n" % str((self.x, self.y))
        item, flags =3D self.mlist.HitTest((self.x, self.y))

        if flags & wx.LIST_HITTEST_ONITEM:
            self.mlist.Select(item)

        event.Skip()
        =

    def OnRightClick(self,event):
        if not hasattr(self, "popupID1"):
            self.popupID1 =3D wx.NewId()
            self.Bind(wx.EVT_MENU, self.OnClear, id=3Dself.popupID1)
            =

        menu =3D wx.Menu()
        # add some items
        menu.Append(self.popupID1, "Clear All Items")
        self.PopupMenu(menu, (self.x, self.y))
        menu.Destroy()
        =

    def OnClear(self,evt):
        self.mlist.DeleteAllItems()
        self.mDialog.selectmValues =3D []
        =

    def OnItemSelected(self, event):
        ##print event.GetItem().GetTextColour()
        self.currentItem =3D event.m_itemIndex
        event.Skip()

       =

if __name__=3D=3D'__main__':
    app =3D wx.PySimpleApp()
    frame =3D wx.Frame(None,-1,"MAC debug",size=3D(480,650),pos=3D(0,0),sty=
le=3Dwx.ALIGN_TOP|wx.DEFAULT_FRAME_STYLE)
    n =3D BtnPanel(frame,-1)
    frame.Show(1)
    app.MainLoop()
-------------- next part --------------
import wx

ID_OK =3D201
ID_CANCEL =3D 202

class mListDialog(wx.Dialog):
    def __init__(self,parent,log):
        wx.Dialog.__init__(self,parent,-1,title=3D"m List",style=3Dwx.DEFAU=
LT_DIALOG_STYLE) =

        =

        self.parent =3D parent
        self.selectmValues =3D []
        self.lst =3D [ 'Apple ', 'Orange', 'Banana',
                'Grapes', 'Mango', 'Strawberry',
                'Pear','WaterMelon ', 'Papaya', 'Lemon',
                'BlackBerry']

        sizer =3D wx.BoxSizer(wx.VERTICAL)
                =

        label =3D wx.StaticText(self, -1, "Select the fruits you wish to di=
splay", (20, 10))
        sizer.Add(label,0,wx.TOP|wx.ALIGN_LEFT|wx.ALL,5)
        =

        lb =3D wx.CheckListBox(self, -1,(10,30),(370,390), self.lst)
        self.lb =3D lb
        sizer.Add(self.lb,0,wx.TOP|wx.ALIGN_LEFT|wx.ALL,5)
        =

        mainSizer  =3D wx.BoxSizer(wx.HORIZONTAL)
        self.okBtn =3D wx.Button(self,ID_OK,label=3D"OK",size=3D(70,21),)
        self.cancelBtn =3D wx.Button(self,ID_CANCEL,label=3D"Cancel",size=
=3D(70,21) )
        mainSizer.Add(self.okBtn,0,wx.BOTTOM|wx.ALIGN_RIGHT|wx.ALL,2)
        mainSizer.Add(self.cancelBtn,0,wx.BOTTOM|wx.ALIGN_RIGHT|wx.ALL,2)
        sizer.Add(mainSizer,0,wx.TOP|wx.ALIGN_CENTER|wx.ALL,5)
        =

        self.SetSizer(sizer)
        =

        self.Bind(wx.EVT_BUTTON,self.OnOk,id=3DID_OK)
        self.Bind(wx.EVT_BUTTON,self.OnCancel,id=3DID_CANCEL)
        self.Bind(wx.EVT_LISTBOX, self.EvtListBox, lb)
        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, lb)

    def OnCancel(self,evt):
        self.Close(True)
        =

    def OnOk(self,evt):
        self.parent.OnPopulatemList(self.selectmValues)

        =

    def EvtListBox(self, event):
        #print 'EvtListBox: %s\n' % event.GetString()
        self.EvtCheckListBox(event)

    def EvtCheckListBox(self, event):
        index =3D event.GetSelection()
        label =3D self.lb.GetString(index)
        if not label in self.selectmValues:
            self.selectmValues.append(label)
            #self.selectmValues.append((index,label))
            #print "values in selectmValues =3D ",self.selectmValues
        status =3D 'un'
        if self.lb.IsChecked(index):
            status =3D ''
        #print 'Box %s is %schecked \n' % (label, status)
        self.lb.SetSelection(index)


More information about the wxpython-users mailing list