wxpython-工具栏上位图上的颜色未出现

wxpython- Color on Bitmap on toolbar not appearing

def createColorTool(self, toolbar, color):
  bmp = self.MakeBitmap(color)
  newId = wx.NewId()
  label=''
  tool = toolbar.AddRadioTool(newId, label,bmp, shortHelp=color)
  self.Bind(wx.EVT_MENU, self.OnColor, tool)
 def MakeBitmap(self, color):
  bmp= wx.EmptyBitmap(16, 15)
  
  dc = wx.MemoryDC()
  dc.SelectObject(bmp)
  
  dc.SetBackground(wx.Brush(color))
  
  dc.SelectObject(wx.NullBitmap)
  return bmp

颜色属性从颜色列表中获取颜色 {'black', 'blue', 'green'} 问题是程序工作正常但对于位图,在工具栏中,仅显示黑色,不显示选择颜色选项列表中指定的任何其他颜色。 您可以在此处查看代码工作原理的图片

我迷失了 DC 操纵,所以这里有一个替代方案。
这假设 colorwx.Colour 例如wx.Colour(0, 155, 255, alpha=255)

def MakeBitmap(self, color):
    bmp = wx.Bitmap.FromRGBA(16, 15, color.red, color.green, color.blue, color.alpha)
    return bmp

创建下面的绿色方块

编辑: 您的代码设置了背景画笔但没有使用它。
所以你返回的是最基本的位图。

如果您必须使用 dc,请尝试以下操作:

def MakeBitmap(self, color):
    bmp = wx.Bitmap(16, 15)
    dc = wx.MemoryDC(bmp)
    dc.SetBackground(wx.Brush(color))
    dc.Clear()
    return bmp

或:

def MakeBitmap(self, color):
    bmp= wx.Bitmap(16, 15)
    dc = wx.MemoryDC()
    dc.SelectObject(bmp)
    dc.SetBackground(wx.Brush(color))
    dc.Clear()
    return bmp 

Clear(self) Clears the device context using the current background brush.