wxPython StaticText控件背景色透明

wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明

版本信息: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即可。

如:

好了完事了。

wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明wxPython StaticText控件背景色透明

版本信息: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即可。

如:

好了完事了。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在