
Ich möchte meiner Applikation gerne einen animierten Splashscreen hinzufügen das insbesondere das wx.HtmlWindow auf älteren Rechner ziemlich lang zu laden braucht...
Klar geht es mit wx.SplashScreen, aber damit können leider keine Animationen dargestellt werden.
Mein Ansatz:
Ich habe einen Dialog erstellt von dem aus der Hauptframe nach einer Sekunde geladen wird (zum testen). Nach dieser Sekunde stockt die Animation jedoch.
Code: Alles auswählen
#------------------------------------------------------------------------------
# class mySplash
#------------------------------------------------------------------------------
class mySplash(wx.Dialog):
def __init__(self):
screen = wx.GetDisplaySize()
wx.Dialog.__init__(self, None, wx.ID_ANY, '', wx.DefaultPosition,
(210,150), wx.STAY_ON_TOP | wx.FRAME_NO_TASKBAR |
wx.RAISED_BORDER)
self.SetBackgroundColour(wx.WHITE)
image = wx.Bitmap('../img/splash.jpg', wx.BITMAP_TYPE_JPEG)
wx.StaticBitmap(self, -1, image, (1,0))
gif = wx.animate.Animation('tiptip.gif')
wx.animate.AnimationCtrl(self, -1, gif, (10,45)).Play()
wx.StaticText(self, -1, 'Data Connector', (105,70))
wx.StaticText(self, -1, 'build " + sVersion', (105,85))
wx.StaticText(self, -1, '(c)2007', (105,105))
wx.StaticText(self, -1, 'Loading...', (105,125))
self.CentreOnScreen()
thread.start_new_thread(self.test,())
self.Show()
def test(self):
time.sleep(1)
wx.CallAfter(self.OK)
def OK(self):
self.frame = myMainFrame.myFrame(self)
self.frame.Show()
#------------------------------------------------------------------------------
# class myApp
#------------------------------------------------------------------------------
class myApp(wx.App):
def OnInit(self):
self.splash = mySplash()
return True
def test2(self, evt):
self.frame = myMainFrame.myFrame(self)
self.frame.Show()
self.SetTopWindow(self.frame)
Programm Splash.py -> startet Main.py
Main.py -> killt nach Start Splash.py
Eigentlich bräuchte man sowas wie eine zweite Mainloop die den Splash unabhängig aktualisiert.
Vielleicht hat noch jemand eine tolle Idee?
