self-closing window with wxPython

J

Jabba Laci

Hi,

I'd like to create a simple alarm application that shows an alarm
window. The application should shut down automatically after 5
seconds. The problem is the following:
* If I keep the mouse outside of the window, the application keeps
running. Somehow self.Destroy() is not taken into account.
* If the mouse is over the window and I keep moving it, the window closes.

I'm using Ubuntu Linux with wxPython 2.8. Below you can find what I have so far.

Thanks,

Laszlo

==========

class MyThread(threading.Thread):
def __init__(self, parent):
self.parent = parent
threading.Thread.__init__(self)

def run(self):
print time.time() # appears on stdout
time.sleep(5)
print time.time() # appears on stdout

self.parent.Destroy() # ??? doesn't work if the mouse is
outside of the application window

class Alarm(wx.Frame):
def __init__(self, title, *args):
wx.Frame.__init__(self, None, -1, title, pos=(0, 0),
size=(800, 600), *args)

self.sleepThread = MyThread(self)
self.sleepThread.start()

self.Bind(wx.EVT_CLOSE, self.on_close)

def on_close(self, event):
self.Destroy()

==========

To call it:

class Main(wx.PySimpleApp):
def OnInit(self):
self.frame = alarm.Alarm("Alarm 0.1")
self.SetTopWindow(self.frame)
self.SetExitOnFrameDelete(True)
self.frame.Show()
return True

a = Main()
a.MainLoop()

=====
 
G

Gregory Ewing

Jabba said:
I'd like to create a simple alarm application that shows an alarm
window. The application should shut down automatically after 5
seconds.

Are you sure that's a good idea? What happens if the
user gets distracted for 6 seconds and misses the
alarm?
 

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

Members online

Forum statistics

Threads
473,982
Messages
2,570,185
Members
46,737
Latest member
Georgeengab

Latest Threads

Top