2016-02-08 5 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']) 

The wx.GraphicsContext будет полезно иметь сглаженный текст, глядя так же, как в основной ОС.

+0

Должен ли я называть это каждый раз, когда я хотел бы текст до –

+0

Ahh, теперь я понимаю «динамический»: я имел ввиду динамику в том смысле, что растровый текст генерируется во время выполнения, вы имели в виду, что текст в растровом изображении ** изменяется ** во время выполнения. Попробовали '' PaintDC'' и таймер, но не видели изменения текста. Вы можете попробовать '' wx.lib.agw.AdvancedSplash'' (я лично не являюсь огромным поклонником, потому что элементы AGW выглядят часто менее родовыми, чем основная часть wx). – nepix32

Смежные вопросы