我的 wxPython 项目有一个框架,有多个嵌套的 sizer。
其中一个 sizer 包含一个 wxStaticImage 和一个从文件中读取的位图。
每次调整框架大小时,我都需要调整图像的大小(增大/缩小),因此它会适合它的尺寸器边界。
(我认为)我知道如何调整图像大小。我不知道如何:
- 如何获取图像容器的宽度或高度?
- 也许我忽略了一个自动执行它的属性?
(现在,我不介意比例)
编辑:完整的解决方案
我对 wxStaticBitmapin.Size 的理解是错误的。它没有描述图像的大小(即图像分辨率),而是- wxStaticBitmapin.Size 给出了sizer 的插槽尺寸,或者换句话说:当前小部件的大小。
因此,使用 Mik 的代码,我现在如何适应插槽。
除了 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()