wx.SplashScreen顶部的动态文本

时间:2016-02-08 13:30:51

标签: python wxpython splash-screen

我正在使用wxPython来创建启动画面。它实际上很好用,但现在我想在启动画面上添加一些加载反馈。有谁知道如何在闪屏上放置动态标签?这是我正在使用的代码:

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 个答案:

答案 0 :(得分: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将使基于抗锯齿的文本看起来与底层操作系统相同。