wxPython wx.StaticBitmap颜色240,240,240

时间:2017-10-13 09:29:21

标签: python wxpython

当我创建一个wx.Staticbitmap并在其中放入Bitmap时,它似乎显示RBG = 240,240,240的颜色为透明(应该是浅灰色)。 为了解决这个问题,我将wx.Staticbitmap的背景颜色也设置为240,240,240。

代码如下:

     self.image_container = wx.StaticBitmap(parent, id=-1, size=(self.x, self.y), pos=(0,0))
     self.image_container.SetBackgroundColour(wx.Colour(240, 240, 240))

     self.image_container.SetBitmap(bmp)

     self.image_container.Update()
     self.image_container.Refresh()

位图的深度为24位。我可能得到了wx.StaticBitmap的样式错误或者其他什么,但我无法弄明白。好像这是一个bug。

Python版本是:2.7.13

Wx版本是:wxPython == 4.0.0b2

在Windows 10上运行

1 个答案:

答案 0 :(得分:0)

当常用的图像格式不支持透明度时,这是Windows API的旧功能。目的是为工具栏和菜单图标等提供透明区域的方法,默认情况下,它们使用浅灰色来指示透明区域的位置,因为那是当时的默认窗口背景颜色。

其他解决方法也是可行的。在将图像提供给staticbitmap之前,可以在内存中调整图像,但最简单的方法就是将其固定在图像文件本身中。例如,您可以编辑图像文件并将240灰色像素更改为241或其他内容。或者,您可以将图像文件转换为支持透明度的不同格式,这应该绕过自动透明度设置。