博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
弥补wxpython无背景图片缺陷
阅读量:5164 次
发布时间:2019-06-13

本文共 2052 字,大约阅读时间需要 6 分钟。

思路:

通过设置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()

可以尝试运行一下 :)

转载于:https://www.cnblogs.com/yjken/p/3917928.html

你可能感兴趣的文章
GitHub 优秀的 Android 开源项目
查看>>
让窗体自适应屏幕
查看>>
vim插件之marks
查看>>
常用 SQL 命令和ASP 编程
查看>>
win10的资源管理器,边框不见了
查看>>
CentOS 网络设置修改
查看>>
二分图
查看>>
python小白-day5 random模块
查看>>
Git Tips
查看>>
2019春第一次课程设计报告
查看>>
Permutations
查看>>
msp430项目编程13
查看>>
【IIS】IIS 7.0/7.5 绑定
查看>>
[SQL] 命令远程恢复数据库
查看>>
人生得以遇见
查看>>
让 .gitignore 文件生效
查看>>
用Python3实现的Mycin专家系统简单实例
查看>>
TortoiseSVN tutorial
查看>>
poj-2376 Cleaning Shifts (排序+贪心)
查看>>
mssql 创建触发器
查看>>