版本信息:python 3.7,wxpython 4.0.4
设置背景图后StaticText控件有白色背景在上面,看起来很难受,于是百度一下搞定这个问题,虽然不是自己原创也记录一下吧,困扰很久的一个问题。直接上代码:
import wx class TransparentStaticText(wx.StaticText): """ 重写StaticText控件 """ def __init__(self, parent, id=wx.ID_ANY, label='', pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TRANSPARENT_WINDOW, name='TransparentStaticText'): wx.StaticText.__init__(self, parent, id, label, pos, size, style, name) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None) self.Bind(wx.EVT_SIZE, self.OnSize) def OnPaint(self, event): bdc = wx.PaintDC(self) dc = wx.GCDC(bdc) font_face = self.GetFont() font_color = self.GetForegroundColour() dc.SetFont(font_face) dc.SetTextForeground(font_color) dc.DrawText(self.GetLabel(), 0, 0) def OnSize(self, event): self.Refresh() event.Skip()
使用透明控件的效果图:
未使用控件的效果图:
使用方法非常简单直接替换之前的wx.StaticText即可。
如:
好了完事了。