Python 使用wx.DC设置背景色的更好方法

Python 使用wx.DC设置背景色的更好方法,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,现在,我把背景颜色设置成这样 dc.DrawRectangle(0,0,宽度,高度) 你知道设置背景色的更好方法吗 对于大多数窗口,包括按钮和其他小部件,正常的方法是调用wxWindow::SetBackgroundColor() 最妙的是,如果你在最上面的父对象上调用它,所有的子对象都会自动继承相同的背景颜色。查看链接了解其具体工作原理。如果您已经在wx.DC上绘制窗口的其余内容,那么最好的方法是设置背景笔刷,然后清除DC。大概是这样的: def OnPaint(self, event):

现在,我把背景颜色设置成这样

dc.DrawRectangle(0,0,宽度,高度)

你知道设置背景色的更好方法吗


对于大多数窗口,包括按钮和其他小部件,正常的方法是调用wxWindow::SetBackgroundColor()


最妙的是,如果你在最上面的父对象上调用它,所有的子对象都会自动继承相同的背景颜色。查看链接了解其具体工作原理。

如果您已经在
wx.DC
上绘制窗口的其余内容,那么最好的方法是设置背景笔刷,然后清除DC。大概是这样的:

def OnPaint(self, event):
    dc= wx.PaintDC(self)
    dc.SetBackground(wx.Brush(someColour))
    dc.Clear()
    # other drawing stuff...
def OnPaint(self, event):
    dc= wx.PaintDC(self)
    dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
    dc.Clear()
    # other drawing stuff...
如果使用窗口的
setbackgroundcolor
方法设置颜色,则可以使用该方法而不是某些固定的颜色值,如下所示:

def OnPaint(self, event):
    dc= wx.PaintDC(self)
    dc.SetBackground(wx.Brush(someColour))
    dc.Clear()
    # other drawing stuff...
def OnPaint(self, event):
    dc= wx.PaintDC(self)
    dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
    dc.Clear()
    # other drawing stuff...

你现在做的有什么问题?我希望有更好的方法。你到底需要改变什么样的背景颜色?分享你的研究成果对每个人都有帮助。告诉我们您发现了什么以及为什么它不能满足您的需要。dc.Clear()做什么?OP想要设置特定背景区域的颜色,而不是整个背景的颜色。因此,他使用dc.DrawRectangle(0,0,宽度,高度)。他想知道这是否是唯一(也是最好的)方法
dc.Clear
用背景刷填充整个dc,这就是OP在主要问题中想要做的:“…用wx.dc设置背景色”,假设宽度和高度是dc的大小。他的方法是使用
DC清除DC的普通新手方法。清除
是他正在寻找的更好的方法。