首页 > 代码库 > 弥补wxpython无背景图片缺陷
弥补wxpython无背景图片缺陷
思路:
通过设置Panel的背景样式为wx.BG_STYLE_CUSTOM:
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
绑定Panel的背景事情:
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
在绑定方法中
bmp = wx.Bitmap("butterfly.jpg")dc.DrawBitmap(bmp, 0, 0)
画出背景图片,从而实现给Panel容器添加背景图片
完整代码如下:
import wx########################################################################class MainPanel(wx.Panel):""""""#----------------------------------------------------------------------def __init__(self, parent):"""Constructor"""wx.Panel.__init__(self, parent=parent)self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)self.frame = parentsizer = wx.BoxSizer(wx.VERTICAL)hSizer = wx.BoxSizer(wx.HORIZONTAL)for num in range(4):label = "Button %s" % numbtn = wx.Button(self, label=label)sizer.Add(btn, 0, wx.ALL, 5)hSizer.Add((1,1), 1, wx.EXPAND)hSizer.Add(sizer, 0, wx.TOP, 100)hSizer.Add((1,1), 0, wx.ALL, 75)self.SetSizer(hSizer)self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)#----------------------------------------------------------------------def OnEraseBackground(self, evt):"""Add a picture to the background"""# yanked from ColourDB.pydc = evt.GetDC()if not dc:dc = wx.ClientDC(self)rect = self.GetUpdateRegion().GetBox()dc.SetClippingRect(rect)dc.Clear()bmp = wx.Bitmap("butterfly.jpg")dc.DrawBitmap(bmp, 0, 0)########################################################################class MainFrame(wx.Frame):""""""#----------------------------------------------------------------------def __init__(self):"""Constructor"""wx.Frame.__init__(self, None, size=(600,450))panel = MainPanel(self)self.Center()########################################################################class Main(wx.App):""""""#----------------------------------------------------------------------def __init__(self, redirect=False, filename=None):"""Constructor"""wx.App.__init__(self, redirect, filename)dlg = MainFrame()dlg.Show()#----------------------------------------------------------------------if __name__ == "__main__":app = Main()app.MainLoop()
可以尝试运行一下 :)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。