#此类用于设置渐变色panel
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, wx.ID_ANY)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnPaint(self, event):
dc = wx.AutoBufferedPaintDC(self)
gc = wx.GraphicsContext.Create(dc)
width, height = self.GetSize()
#CreateLinearGradientBrush(x1, y1, x2, y2, colour1, colour2)
'''
参数要求:
x1: 渐变的起始点横坐标
y1: 渐变的起始点纵坐标
x2: 渐变的结束点横坐标
y2: 渐变的结束点纵坐标
colour1: 渐变起始点的颜色(wx.Colour对象)
colour2: 渐变结束点的颜色(wx.Colour对象)
'''
gradient = gc.CreateLinearGradientBrush(0, 0, 0, height,
ThemeColorBox.TEm_panel15_MyPanelBegin,
ThemeColorBox.TEm_panel15_MyPanelEnd)
gc.SetBrush(gradient)
gc.DrawRectangle(0, 0, width, height)
def OnSize(self, event):
self.Refresh() # 刷新窗口显示
self.Layout() # 调用Layout()重新布局,否则内部控件可能可能因为尺寸变动挤成一坨