2012-09-21 99 views
2

如何將簡單的靜態圖像(位圖)加載到我的面板中?我只想定義圖像的位置,沒有別的。加載靜態位圖

這將運行而不會出現錯誤:

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的大小。

回答

3

我不太熟悉將位圖插入到wxPython中,但是我只是在API上做了一些閱讀,我想我可能已經找到了你的問題。

API for wx.StaticBitmap.__init__()狀態「通常情況下,你應該只從一個子類初始化作爲一個普通的老wx.Control稱這是不是非常有用的。」在同一頁面上,您還可以看到一個wx.StaticBitmap.Create() method,它被描述爲「執行第二階段並創建GUI控件」。您只完成了兩階段流程的第一階段。嘗試調用Create()方法,看看它是否有幫助。

問題就變成了「爲什麼我們甚至需要一個'第二階段'來創造?」我沒有更多的挖掘,我發現從wx.Image API以下摘錄:

A wx.Image cannot be drawn directly to a wx.DC. Instead, a platform-specific wx.Bitmap object must be created from it using the wx.BitmapFromImage constructor.

這似乎暗示,它們都可能需要,或在邏輯上保證在wxPython中的圖像呈現的一些依賴於平臺的一部分,該圖像創作分爲兩個階段。

最後一點需要說明的是,正如你所看到的,wx.Image API表示使用wx.BitmapFromImage() method。我閱讀了文檔,看起來它可能會爲你做所有的工作。

祝你好運!