Hi all,
when I bound my own methods to the wx.EVT_SIZE and wx.EVT_MOVE events
of a frame, I noticed that these events are triggered multiple times
for a single change. How can I avoid this, so that my method is
executed only once each time a user resizes (moves) a window? Below is
a minimal exmaple.
Thanks for your help,
Johann
MInimal example:
···
-------------------------------------------------------------
import wx
class MyApp(wx.App):
def OnInit(self):
Frame = wx.Frame(None)
Frame.Bind(wx.EVT_SIZE, self.OnSize)
Frame.Bind(wx.EVT_MOVE, self.OnMove)
Frame.Show()
return True
def OnSize(self, event):
print 'Size event, new size:' + str(event.GetSize())
event.Skip()
def OnMove(self, event):
print 'Move event, new pos:' + str(event.Position)
event.Skip()
def main():
app = MyApp(0)
app.MainLoop()
if __name__ == '__main__':
main()
-------------------------------------------------------------
Sample output on my computer (Ubuntu 11.04, latest stable wxpython
2.8.12 from the wx APT repository). When the frame was generated, the
first series of events was triggered. I then resized the window on the
desktop oncem which triggered the last five events.
Size event, new size:(400, 250)
Size event, new size:(400, 250)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1197, 779)
Move event, new pos:(1152, 727)
Size event, new size:(445, 302)
Size event, new size:(445, 302)
Move event, new pos:(1152, 727)
Move event, new pos:(1152, 727)
Move event, new pos:(1152, 727)
Move event, new pos:(1152, 727)