微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决wxpython-工具栏位图上的颜色没有出现

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'} 问题是程序工作正常,但对于位图,在工具栏中,只显示黑色而不显示任何颜色选择颜色选项列表中指定的其他颜色。 您可以在此处查看代码工作方式的图像

enter image description here

解决方法

我对 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

在下方创建绿色方块

enter image description here

编辑: 您的代码设置了背景画笔但不使用它。
所以你正在返回裸骨位图。

如果您必须使用 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 

清除(自我) 使用当前背景画笔清除设备上下文。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。