请教wxPython中如何设置背景为透明

请教wxPython中如何设置背景为透明

现在我有急迫而无可奈何的问题要解决,希望了解的朋友帮个忙。

我想在桌面上按图象来建立一个不规则窗口,让图象透明部分不显示。所以我在Frame中使用了几个属性,包括wx.FRAME_SHAPED等属性。然后我使用图片来试,发现同样是透明背景的图,有的图可以实现窗口的部分透明,有的不可以,而且我真正需要的图并不可以。搞了很长时间也不明白。

现在发现,图片背景确实是透明的。比如,使用

[Copy to clipboard] [ - ]
CODE:
dc.SetBackground(wx.RED_BRUSH)
dc.Clear()

之后,原来应该透明的部分就变成红色。我试过使用wx.TRANSPARENT_BRUSH画刷,结果背景会变成黑色。wx.Colour也似乎并不支持alpha通道。

我需要:将窗口的背景设为透明。

现在十分郁闷。哪位能帮下我?

多谢。
现在觉得可能是这里出问题:

[Copy to clipboard] [ - ]
CODE:
r = wx.RegionFromBitmap(p)
self.SetShape(r)

或许Region获取的有问题。郁闷,不知道是PNG哪里不对。


[Copy to clipboard] [ - ]
CODE:
p.GetMask()

返回值为None。
为什么会这样?我在Python代码中手动设置Bitmap的Mask,但是怎么把透明值设置为mask?我现在都不知道怎么获取Bitmap某位置上的Color。或者有什么工具可以向PNG中写入Mask?
持续郁闷中。
wxpython自带的demo里面有个例子你可以去看看
我就是参照那个写的啊,他的那个PNG图不知道为什么可以自动设置Mask。
现在我修改图片,把原来透明的地方都改成某种不透明的颜色,然后手动设置位图的Mas为此颜色。暂时讲究用了。
真不爽啊。
我也遇到了这个问题,找到了最后的方法,的确是mask的问题
img.SetMask(wx.Mask(img, wx.WHITE))