2012-12-04 203 views
5

我的wxPython項目有一個框架,具有多個嵌套的大小。wxpython:自動調整大小以適應大小的靜態圖像(staticbitmap)

其中一個sizer包含一個wxStaticImage,它具有從文件讀取的位圖。

每次調整幀大小時,我都需要調整圖像的大小(增大/縮小),因此它將適合sizer的邊界。

(我認爲)我知道如何調整圖像大小。我不知道是如何:

  • 如何獲取圖像的容器的寬度或高度?
  • 也許我忽略了一個屬性,它auitmatically?

(現在,我不介意的比例)

編輯:完整的解決方案

  1. 我理解錯了wxStaticBitmapin.Size。它沒有描述圖像0​​(即圖像分辨率)的大小,而是 - wxStaticBitmapin.Size給出了sizer的插槽尺寸,換句話說:當前小部件的尺寸。

    所以用Mik的代碼我現在該如何適應插槽。

  2. 除了mike的解決方案:在幀上使用onSize事件時,不要忘記添加event.skip()。否則sizer將停止重新排列。別無選擇,只需使用圖像的onSize即可。

這裏是完整的事件方法:

def bitmap1_onSize(self, e=None): 
    W, H = self.bitmap1.Size 
    if W > H: 
     NewW = W 
     NewH = W * H/W 
    else: 
     NewH = H 
     NewW = H * W/H 
    img = wx.Image(self.frame_file_picker.Path, wx.BITMAP_TYPE_ANY) 
    img = img.Scale(NewW,NewH) 
    self.bitmap1.SetBitmap(wx.BitmapFromImage(img)) 
    e.Skip() 
+0

我想知道現在有派生類實現了這一點。我認爲這個用例並不是那麼不尋常。 – buhtz

回答

相關問題