我的wxPython项目有一个框架,并包含多个嵌套的大小调整器。
其中一个大小调整器包含一个从文件读取的位图的wxStaticImage。
我需要图像随着框架的调整而重新调整大小(增长/缩小),以适应其大小调整器的边界。
(我认为)我知道如何调整图像的大小。我不知道如何:
- 获取图像容器的宽度或高度?
- 可能我忽略了可以自动做到这一点的属性?
(目前,我不介意比例)
编辑:完整解决方案
我对wxStaticBitmapin.Size的理解是错误的。它并不描述图像的大小(即图像分辨率),而是描述wxStaticBitmapin.Size给出大小调整器槽口的尺寸,换句话说:当前小部件的大小。
所以,使用Mik的代码,我现在知道如何适应槽口。
除了Mik的解决方案之外:当在框架上使用onSize事件时,请勿忘记添加event.skip()。否则,大小调整器将停止重新对齐。或者,只需使用图像的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()