使用重载方法创建wxImage

时间:2015-08-18 18:19:43

标签: python wxpython overloading

我正在尝试创建一个纯红色16x16方形的wxImage。为此,我做了以下事情:

image = wx.EmptyImage(16, 16)
image.SetRGB(rect=wx.Rect(0,0,16,16), red=255, green=0, blue=0)

我正在尝试使用找到的SetRGB函数的第二个版本here

但是,我得到以下内容: TypeError: Required argument 'x' (pos 2) not found,似乎表明它正在尝试使用该函数的第一个版本。

我也尝试过:

image.SetRGB(wx.Rect(0,0,16,16), 255, 0, 0)

并得到了同样的错误。

有没有某种方法来调用我失踪的这个功能?我想我只是错误地调用了函数,但我不太确定如何修复它。

1 个答案:

答案 0 :(得分:3)

这取决于您使用的wxPython

img = wx.EmptyImage(TILE_WIDTH, TILE_HEIGH)
img.SetRGBRect(wx.Rect(0, 0, TILE_WIDTH, TILE_HEIGH), 255, 0, 0)
bmp = wx.BitmapFromImage(img)

将适用于wxPython 3.0 / classic / MSW。你在链接中指的是wxPython 3.0 / Phoenix,这是一个不同的野兽。上面会解释翻译,而下面的行将起作用。

img.SetRGB(wx.Rect(0, 0, TILE_WIDTH, TILE_HEIGH), 255, 0, 0)

在两个平台上工作的东西(大概是你想要的):

bmp = wx.EmptyBitmapRGBA(TILE_WIDTH, TILE_HEIGH, 255, 0, 0, 255)
img = wx.ImageFromBitmap(bmp)