[wxPython-users] EVT_TEXT_URL event is fired many times
Werner F. Bruhin
werner.bruhin at free.fr
Thu Jul 5 01:13:14 PDT 2007
Hi Robin,
Robin Dunn wrote:
> Werner F. Bruhin wrote:
>> I am just experimenting with this and I always get multiple events =
>> fired when I click once on a link.
>>
>> Is this a known issue, or am I doing something wrong?
>
> I don't recall hearing anything about this. Do you call event.Skip() =
> in the handler?
No I don't.
Attached is a small sample with both a wx.TextCtrl and =
wx.lib.masked.TextCtrl and both show the same problem, i.e. clicking =
ones on the control fires the event multiple times.
BTW, I work around it by storing the last url and if it is the same I =
just ignore it.
Werner
-------------- next part --------------
#Boa:Frame:Frame1
import wx
import wx.lib.masked.textctrl
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1TEXTCTRL1, wxID_FRAME1TEXTCTRL2, =
] =3D [wx.NewId() for _init_ctrls in range(3)]
class Frame1(wx.Frame):
def _init_coll_flexGridSizer1_Items(self, parent):
# generated method, don't edit
parent.AddWindow(self.textCtrl1, 0, border=3D0, flag=3Dwx.EXPAND)
parent.AddWindow(self.textCtrl2, 0, border=3D0, flag=3Dwx.EXPAND)
def _init_coll_flexGridSizer1_Growables(self, parent):
# generated method, don't edit
parent.AddGrowableCol(0)
def _init_sizers(self):
# generated method, don't edit
self.flexGridSizer1 =3D wx.FlexGridSizer(cols=3D1, hgap=3D0, rows=
=3D0, vgap=3D0)
self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
self.SetSizer(self.flexGridSizer1)
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=3DwxID_FRAME1, name=3D'', parent=3Dprnt,
pos=3Dwx.Point(614, 279), size=3Dwx.Size(248, 123),
style=3Dwx.DEFAULT_FRAME_STYLE, title=3D'Frame1')
self.SetClientSize(wx.Size(232, 87))
self.textCtrl1 =3D wx.TextCtrl(id=3DwxID_FRAME1TEXTCTRL1, name=3D't=
extCtrl1',
parent=3Dself, pos=3Dwx.Point(0, 0), size=3Dwx.Size(232, 21),
style=3Dwx.TE_AUTO_URL, value=3D'')
self.textCtrl1.Bind(wx.EVT_TEXT_URL, self.OnTextCtrl1TextUrl,
id=3DwxID_FRAME1TEXTCTRL1)
self.textCtrl2 =3D wx.lib.masked.textctrl.TextCtrl(id=3DwxID_FRAME1=
TEXTCTRL2,
name=3D'textCtrl2', parent=3Dself, pos=3Dwx.Point(0, 21),
size=3Dwx.Size(232, 21), style=3Dwx.TE_AUTO_URL, value=3D'')
self.textCtrl2.SetMask('X{50}')
self.textCtrl2.Bind(wx.EVT_TEXT_URL, self.OnTextCtrl2TextUrl,
id=3DwxID_FRAME1TEXTCTRL2)
self._init_sizers()
def __init__(self, parent):
self._init_ctrls(parent)
self.textCtrl1.SetValue('http://www.python.org')
self.textCtrl2.SetValue('http://www.wxpython.org')
def OnTextCtrl1TextUrl(self, event):
print 'ctrl 1 url: %s' % event.GetEventObject().GetValue()
def OnTextCtrl2TextUrl(self, event):
print 'ctrl 2 url: %s' % event.GetEventObject().GetValue()
if __name__ =3D=3D '__main__':
app =3D wx.PySimpleApp()
frame =3D create(None)
frame.Show()
app.MainLoop()
More information about the wxpython-users
mailing list