2016-02-08 42 views
1

我正在使用wxPython創建啓動畫面。它實際上效果很好,但現在我想在啓動畫面上加載一些加載反饋。有誰知道我可以如何在熒幕上放一個動態標籤?這裏是我使用的代碼:wx.SplashScreen上的動態文本

class myFrame(wxFrame): 
    wx.Frame.__init__(self, parent, -1, _("Radar"), 
         size=(800, 600), style=wx.DEFAULT_FRAME_STYLE) 


class MySplash(wx.SplashScreen): 
    def __init__(self, parent=None): 
     aBitmap = wx.Image(name=VarFiles["Radar_Splash"]).ConvertToBitmap() 
     splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT 
     splashDuration = 12000 # ms 
     wx.SplashScreen.__init__(self, aBitmap, splashStyle, splashDuration, parent) 
     self.Bind(wx.EVT_CLOSE, self.CloseSplash) 
     wx.Yield() 
    def CloseSplash(self, evt): 
     self.Hide() 
     global frame 
     frame = myFrame(parent=None) 
     app.SetTopWindow(frame) 
     frame.Show(True) 
     evt.Skip() 

class MyAwesomeApp(wx.App): 
    def OnInit(self): 
     MySplash = MySplash() 
     MySplash.Show() 
     return True 

回答

1

由於SplashScreen基本上顯示位圖的窗口,你將需要修改所提供的位圖,做布點自己。

def _draw_bmp(bmp, txt_lst): 
    dc = wx.MemoryDC() 
    dc.SelectObject(bmp) 
    dc.Clear() 
    gc = wx.GraphicsContext.Create(dc) 
    font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) 
    gc.SetFont(font) 
    for i, line in enumerate(txt_lst): 
     dc.DrawText(line, 10, i * 20 + 15) 
    dc.SelectObject(wx.NullBitmap) 

    # ... 
     aBitmap = #... 
     _draw_bmp(aBitmap, ['splash', 'screen', 'text']) 

wx.GraphicsContext將是有幫助的抗鋸齒文本看一樣的底層操作系統。

+0

每次我想要文字到 –

+0

啊,現在我明白「動態」了:我意思是動態的,因爲位圖文本是在運行時生成的,您的意思是位圖文本**在運行期間更改**。已經嘗試了一個''PaintDC''和一個計時器,但沒有看到改變文本。你可以試試''wx.lib.agw.AdvancedSplash''(我個人來說我不是一個巨大的粉絲,因爲AGW項目看起來往往不如wx的核心部分通用)。 – nepix32