"""Example of using a splash screen (and the use of pyface Timer).""" import time from pyface.timer.api import Timer from pyface.api import GUI, ApplicationWindow, ImageResource, SplashScreen from pyface.action.api import Action, MenuManager, MenuBarManager from traits.api import Any, Int splash_screen = SplashScreen(image=ImageResource('images/splash')) class MainWindow(ApplicationWindow): """ The main application window. """ # The pyface Timer. my_timer = Any() # Count each time the timer task executes. counter = Int def __init__(self, **traits): """ Creates a new application window. """ # Base class constructor. super(MainWindow, self).__init__(**traits) # Add a menu bar. self.menu_bar_manager = MenuBarManager( MenuManager( Action(name='Start Timer', on_perform=self._start_timer), Action(name='Stop Timer', on_perform=self._stop_timer), Action(name='E&xit', on_perform=self.close), name = '&File', ) ) return def _start_timer(self): """Called when the user selects "Start Timer" from the menu.""" if self.my_timer is None: # First call, so create a Timer. It starts automatically. self.my_timer = Timer(500, self._timer_task) else: self.my_timer.Start() def _stop_timer(self): """Called when the user selecte "Stop Timer" from the menu.""" if self.my_timer is not None: self.my_timer.Stop() def _timer_task(self): """The method run periodically by the timer.""" self.counter += 1 print "counter = %d" % self.counter if __name__ == "__main__": gui = GUI(splash_screen=splash_screen) # Create and open the main window. window = MainWindow() # Simulate a busy window initialization. time.sleep(5) window.open() # Start the GUI event loop! gui.start_event_loop()