【问题标题】:Better way to Set Background Color with wx.DC使用 wx.DC 设置背景颜色的更好方法
【发布时间】:2012-07-30 19:01:19
【问题描述】:

现在,我正在设置这样的背景颜色,

dc.DrawRectangle(0,0,width,height)

您知道设置背景颜色的更好方法吗?

http://wxpython.org/docs/api/wx.DC-class.html

【问题讨论】:

  • 你现在做的有什么问题?
  • 我希望有更好的方法。
  • 背景色到底需要改什么?分享您的研究对每个人都有帮助。告诉我们您发现了什么以及为什么它不能满足您的需求。

标签: python wxpython wxwidgets


【解决方案1】:

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

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

如果您使用窗口的SetBackgroundColour 方法设置颜色,那么您可以使用它而不是一些固定的颜色值,如下所示:

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,width,height)。他想知道这是否是唯一(也是最好的)方法
  • dc.Clear 用背景画笔填充整个 DC,这是 OP 在主要问题中暗示他想要做的事情:“...用 wx.DC 设置背景颜色”,假设宽度和高度是 DC 的大小。他的方法是新手常用的清除DC的方法,使用dc.Clear是他正在寻找的更好的方法。
【解决方案2】:

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

http://docs.wxwidgets.org/2.8/wx_wxwindow.html#wxwindowsetbackgroundcolour

巧妙的是,如果您在最顶层的父级上调用它,所有子级将自动继承相同的背景颜色。请参阅链接以了解其具体工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2012-06-04
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多