清风徐来
知是行之始,行是知之成

wxpython设置背景

Python wxpython背景 约 1 分钟

用wxformbuilder+一点代码来实现。

首先用wxformbuilder来做出界面,并生成代码。运行结果:

通过 EVT_ERASE_BACKGROUND 绑定绘制逻辑后,就可以得到背景图片效果。前后关系如下:

wxPython 面板背景设置前后对比图
wxPython 面板背景设置前后对比图

实现代码如下:

#coding:utf-8

import wx
#导入wxformbuilder生成的代码
import BgDemo

class Main(wx.App):
	def __init__(self, redirect=False, filename=None):
		wx.App.__init__(self, redirect, filename)
		dlg = BgDemo.MyFrame(None)

		#这里设置哪个控件需要设置背景
		dlg.m_panel1.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)

		dlg.Show()

	def OnEraseBackground(self, evt):
		"""
		设置背景的方法
		"""
		dc = evt.GetDC()
		if not dc:
			dc = wx.ClientDC(self)
			rect = self.GetUpdateRegion().GetBox()
			dc.SetClippingRect(rect)
		dc.Clear()
		bmp = wx.Bitmap("Sunset.jpg")
		dc.DrawBitmap(bmp, 0, 0)
 
if __name__ == "__main__":
	app = Main()
	app.MainLoop()