Расширенный заставка как я могу использовать его в своем коде - PullRequest
1 голос
/ 22 февраля 2012

Я знаю, как сделать расширенный экран-заставку в wxpython, но я не знаю, как именно добавить его в приложение. Я немного запутался. Может ли кто-нибудь помочь лучше понять, что происходит? Ниже приведен простой код для создания заставки. Спасибо !!!

import wx
import wx.lib.agw.advancedsplash as AS

app = wx.App(0)

frame = wx.Frame(None, -1, "AdvancedSplash Test")

imagePath = "my_splash_image.png"
bitmap = wx.Bitmap(imagePath, wx.BITMAP_TYPE_PNG)
shadow = wx.WHITE

splash = AS.AdvancedSplash(frame, bitmap=bitmap, timeout=5000,
                           agwStyle=AS.AS_TIMEOUT |
                           AS.AS_CENTER_ON_PARENT |
                           AS.AS_SHADOW_BITMAP,
                           shadowcolour=shadow)

app.MainLoop()

1 Ответ

2 голосов
/ 22 февраля 2012

Этот код выполняет только то, что ему говорят: он создает заставку, показывает его в течение 5 секунд и затем переходит в основной цикл. Возможно, вы забыли добавить frame.Show() к коду, чтобы фактически показать основной фрейм, и (необязательно) frame.Center(), чтобы центрировать фрейм на экране.

Чтобы рамка не теряла фокус после разрушения заставки, я рекомендую сначала показать заставку (с parent=None), а затем инициализировать рамку:

app = wx.App(0)
imagePath = "my_splash_image.png"
bitmap = wx.Bitmap(imagePath, wx.BITMAP_TYPE_PNG)
shadow = wx.WHITE
splash = AS.AdvancedSplash(None, bitmap=bitmap, timeout=5000,
                           agwStyle=AS.AS_TIMEOUT |
                           AS.AS_CENTER_ON_PARENT |
                           AS.AS_SHADOW_BITMAP,
                           shadowcolour=shadow)
frame = wx.Frame(None, -1, "AdvancedSplash Test")
frame.Center()
frame.Show()
app.MainLoop()
...