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