加载静态位图

时间:2012-09-21 22:06:16

标签: wxpython

如何将简单的静态图像(位图)加载到我的面板中?我只是想定义图像的位置,没有别的。

这样运行没有错误:

bmp = wx.Image('pics/default.bmp', wx.BITMAP_TYPE_BMP).ConvertToBitmap()
wx.StaticBitmap(self.panel, -1, bmp, (500, 500))

但不是我的图像(default.bmp),只有一个小的黑色方块(但至少在正确的位置)

编辑: 这有效:

    self.picture = wx.StaticBitmap(self.panel,size=(200,300),pos=(500,500))
    self.picture.SetBitmap(wx.Bitmap('pics/default.bmp'))

问题是我必须添加StaticBitmap的大小。

1 个答案:

答案 0 :(得分:3)

我不太熟悉将位图插入到wxPython中,但是我只是对API进行了一些阅读,我想我可能已经找到了你的问题。

API for wx.StaticBitmap.__init__()状态“通常你应该只从子类' init 中调用它作为普通的旧wx.Control不是很有用。”在同一页面上,您还可以看到wx.StaticBitmap.Create() method,其被描述为“执行第二阶段并创建GUI控件”。您只完成了两阶段流程的第一阶段。尝试调用Create()方法,看看它是否有帮助。

然后问题变成“为什么我们甚至需要'第二阶段'来创作?”我做了一些挖掘,我从wx.Image API找到了以下摘录:

  

无法将wx.Image直接绘制到wx.DC.相反,必须使用wx.BitmapFromImage构造函数从中创建特定于平台的wx.Bitmap对象。

这似乎意味着在wxPython中存在一些与平台相关的图像渲染部分,要么或在逻辑上保证将图像创建分为两个阶段。

最后需要注意的是,正如您所看到的,wx.Image API表示要使用wx.BitmapFromImage() method。我阅读了文档,看起来它可能会为您完成所有工作。

祝你好运!