wx.Timer not working


5

5lvqbwl02

Windows XP SP3
Python 2.5
wx.version() = '2.8.1.1 (msw-unicode)'
------
I have written the following *simplest* implementation of wx.timer I
can think of. No workie. I want an exception, a print statement, or
something.

The wxpython demos all work, but for some reason this isn't. The
demos are simple and straghtforward, so I think I understand how it
should work. Clues please? I've tried variations of ID's, SetOwners,
using and redefining Notify(), Bind, Connect, etc. In the cases where
the interpreter doesn't complain about passed argument types, the
callback function is never called.


import wx

class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, pos=(100, 100))

timer = wx.Timer(self, -1)
self.Bind(wx.EVT_TIMER, self.OnTick, timer)
timer.Start(100)

def OnTick(self, event):
print 'Hi. Bye.'
1/0 #<-- should crash as evidence callback is being called

class MyApp(wx.App):
def OnInit(self):
frame1 = MyFrame(None, wx.ID_ANY, "This is a test")
frame1.Show(True)
return True

app = MyApp(0)
app.MainLoop()


Thanks for any advice!!

Michael
 
Ad

Advertisements

M

Mike Driscoll

Windows XP SP3
Python 2.5
wx.version() = '2.8.1.1 (msw-unicode)'
------
I have written the following *simplest* implementation of wx.timer I
can think of.  No workie.   I want an exception, a print statement, or
something.

The wxpython demos all work, but for some reason this isn't.  The
demos are simple and straghtforward, so I think I understand how it
should work.  Clues please?  I've tried variations of ID's, SetOwners,
using and redefining Notify(), Bind, Connect, etc.  In the cases where
the interpreter doesn't complain about passed argument types, the
callback function is never called.

import wx

class MyFrame(wx.Frame):
        def __init__(self, parent, id, title):
                wx.Frame.__init__(self, parent, id,     title, pos=(100, 100))

                timer = wx.Timer(self, -1)
                self.Bind(wx.EVT_TIMER, self.OnTick, timer)
                timer.Start(100)

        def OnTick(self, event):
                print 'Hi. Bye.'
                1/0 #<-- should crash as evidence callback is being called

class MyApp(wx.App):
        def OnInit(self):
                frame1 = MyFrame(None, wx.ID_ANY, "This is a test")
                frame1.Show(True)
                return True

app     = MyApp(0)
app.MainLoop()

Thanks for any advice!!

Michael

I'm not seeing anything either. Please post this to the wxPython
user's group for additional help:

http://www.wxpython.org/maillist.php

Mike
 
5

5lvqbwl02

Ad

Advertisements

M

Mike Driscoll

I think I figured it out.  By looking at the wxTimer example here:http://wiki.wxpython.org/AnotherTutorial#head-420329f7c159d81cb03a6dd...

My code created a temporary timer object and did not make it a class
member.  When I changed it to be a class member with self.timer, then
it worked.

thanks
Michael

Ah...I didn't even think about that. I noticed I had self.timer in my
code, but I didn't realize it was required. Sorry I wasn't of more
help. Still, you can learn a lot from the wxPython user's group just
by reading other people's posts.

Mike
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top