ich habe ein Programm, dass sehr viele und große Unterprogramme beim Start importiert. Daher wollte ich die ladezeit mit einem Splash "verkürzen". Leider erscheint der Splash erst kurz vor dem erscheinen des Hauptfensters und nicht sofort.
Unten mal der abgemagerte (funktionierende) Beispielcode. Dieser lädt natürlich schnell, da nichts weiter importiert wird.
Frage: wie kann ich das Anzeigen des Splash beschleunigen oder kann ich das importieren der Module mit einem event verbinden??
Noch eine Frage nebenbei: das icon im Frame erscheint auf meinem 19'' Monitor (1600x1200), aber auf dem 24'' Monitor mit einer Auflösung von
1920x1200 leider nicht. Woran kann das liegen? Evtl. an der eingestellten Icon-Größe in Vista? Ich dachte das wird automatisch skaliert.
Gruß Mathi
Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
from wx.lib.embeddedimage import PyEmbeddedImage
import wx.lib.newevent
#import wx.html
wx.SetDefaultPyEncoding("iso-8859-15")
#---------------------------------------------------------------------------------------
icon_stream = PyEmbeddedImage(
"iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAAEGUlE"
"QVRIie1WS0srSxCu6emeR2I0JiSKaBa+FSQouAnE4MJf4EIQf4Nu/DWu/AsuxIXg+4EgKi6S"
"nWJioiSZPCaJwzzSfRfNzQk65njlcs65cL/FMExX9Vf1dVX1APwnIAjCL3T7Nn4137+C7wTd"
"2UcQhHaDnxr/eB8eHl5bW8vlcoIgEEIsy6KUfvRhjImiGIlEtra2np+fAWBpaWl2dlbTNMYY"
"ACCECCG2bVNKRVHEGFuWBQCUUowxd8Tz8/Nzc3MrKyulUimTyUSjUcdxXMlkWdY0bXd3N5vN"
"MsYWFhbi8XgwGOTBSZJ0fn4ejUYlSUomkwMDA4FAgC/Jsvz6+rq3t4ebzWYkEqnVaoQQVVV1"
"Xbdt+7PMxsbGCoUCF+fl5WVgYCCfz1NKGWOKovT29jLGGo1GJBLRNA1j3Gw2GWOEkMHBQQBA"
"AKAoCteQEIIQ6iC9JEmcmDGGEEII8e+CIHAZMcaMMUmSJEniq3xJFEUAwAihnZ2diYkJALi5"
"uVldXQ2Hw65nLopiPp8fHR19eHgAgPHxcV3Xh4aGGGOU0re3t9PT03g8bhhGsVjEGCcSCUVR"
"uP7VahUAMKV0eXlZ13VCSDAYnJ6eFkXxHRljjAfY3d1dLBb5x83NTVVVDcOglHK5jo+P/X6/"
"YRhTU1PX19eTk5N8K+749vaGAcAwjEajIctyV1cXADSbTa4ML7P29xYTAFiWZdt2ywYAvF6v"
"YRiGYWCMVVVtbdVy/CE6AGCM27N5x+RaNe90hr+7sH2rFjDXVFEUQkh74P+I9YvACKGTk5NA"
"IEAIeXx8vLi46OnpeRdvJpPxeDwejwdjvLGxcXBw8E0yxtj09LSqqjx9RVF0XW+3IIRUKpX+"
"/n7Lsnp6ejKZzPczo5T6fD7TNAGAUsqPvd2Ct4tpmqZpejyeDnvxzmu1oIsBxvju7s5xHF3X"
"n56eeAO2wKdAKpXSNE3TtMPDw8+6HgDu7+8xxoIgFAqFcrnsklk6nXYc5+zsjAd1dHTUqleO"
"crkci8XC4XC1Wp2cnHSdnBwzMzN8NRQK1et1F7LLy8vLy8sO4gDA9vZ2JBIBAMbYu1DawRhz"
"HIcPFFezTzVph8/nE0Xxi3Xf4XpDnZc56vW6IAgfx9jXaThwIpFYX1/P5XKuiQuCUCqVGGOl"
"UknXddM0CSGdd+xE1tfXhzFeXFy0LMs1NITQ/v7++Pi43++/vb3tUI0/1RlTSkdGRqrV6mdk"
"siwPDQ3xHojFYh0KhLcNv9VcY8L82uSjCNwGICHE6/X6fD6MsSzL/ORck6jVapIkZbNZv9/v"
"qjaybTuVSpmmyWdH+9O2bcdxTNOsVCrJZLJarV5dXYVCoY9MXBKEkKZpyWQynU4Hg0GX3Fsh"
"fPZ39if+v/6emL7E+ifK9T9+O/4Ca6olvzq05dsAAAAASUVORK5CYII="
)
#---------------------------------------------------------------------------------------------
class MySplashScreen(wx.SplashScreen):
"""
Create a splash screen widget.
"""
def __init__(self, parent=None):
geticon_streamData = icon_stream.GetData()
geticon_streamImage = icon_stream.GetImage()
geticon_streamBitmap = icon_stream.GetBitmap()
bmp1=geticon_streamBitmap
mask = wx.Mask(bmp1, wx.BLUE)
bmp1.SetMask(mask)
splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT
splashDuration = 1000 # milliseconds
wx.SplashScreen.__init__(self, bmp1, splashStyle,
splashDuration, parent)
wx.Yield()
#---------------------------------------------------------------------------
class MyFirstFrame(wx.Frame):
"""
Erster Frame
"""
def __init__(self, parent = None, id = -1, title = '*** Tools V2.01 ***'):
"""
Frame initialisieren und aufbauen
"""
# Initialisieren
wx.Frame.__init__(self, parent, id, title,size=(900,870), style=wx.DEFAULT_DIALOG_STYLE | wx.MINIMIZE_BOX )
# Basispanel
panel = wx.Panel(self)
panel.SetBackgroundColour(wx.Colour(240,240,240))
#Icon
img = wx.ImageFromBitmap(icon_stream.GetBitmap())
img.Rescale(16, 16)
bmp2 = wx.BitmapFromImage(img)
bmp2.SetMaskColour(wx.BLUE)
icon = wx.IconFromBitmap(bmp2)
self.SetIcon(icon)
# Font- Schriftart der Überschriften
font = wx.Font(10, wx.NORMAL, wx.NORMAL, wx.BOLD)
# Frame zentrieren
if parent:
self.CenterOnParent(parent)
else:
self.Center()
# Frame anzeigen
self.Show()
#-----------------------------------------------------------------------------------------------------------
def main():
"""
Hauptprozedur
"""
app = wx.App()
splash=MySplashScreen()
splash.Show()
first_frame = MyFirstFrame()
first_frame.Center()
first_frame.Show()
app.MainLoop()
if __name__ == "__main__":
main()