Dự án wxPython của tôi có khung, với nhiều bộ lồng nhau lồng nhau.wxpython: tự động thay đổi kích thước ảnh tĩnh (staticbitmap) để vừa với kích thước
Một trong số các sizers có chứa một wxStaticImage với một bitmap được đọc từ một tệp.
Tôi cần hình ảnh để thay đổi kích thước (tăng/thu nhỏ) mỗi lần khung được thay đổi kích thước, vì vậy nó sẽ phù hợp với ranh giới của sizer.
(Tôi nghĩ rằng) Tôi biết cách thay đổi kích thước hình ảnh. Những gì tôi không biết là cách:
- cách lấy chiều rộng hoặc chiều cao của hình ảnh?
- có lẽ tôi đã bỏ qua một tài sản thực hiện nó theo cách thủ công?
(cho bây giờ, tôi không nhớ proportions)
Chỉnh sửa: Hoàn thành giải pháp
tôi hiểu sai về wxStaticBitmapin.Size. nó KHÔNG mô tả kích thước của hình ảnh (tức là độ phân giải hình ảnh), nhưng thay vào đó - wxStaticBitmapin.Size cung cấp các kích thước vùng của sizer sizer hoặc nói cách khác: kích thước của tiện ích con hiện tại.
vì vậy với mã của Mik i bây giờ làm thế nào để vừa với khe.
ngoài giải pháp của mike: khi sử dụng sự kiện onSize trên khung, đừng quên thêm event.skip(). nếu không thì các sizers sẽ ngừng sắp xếp lại. Altertanively, chỉ cần sử dụng onSize của hình ảnh.
đây là phương pháp sự kiện hoàn chỉnh:
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()
Tôi tự hỏi rằng hiện giờ có lớp dẫn xuất thực hiện điều này. Trường hợp sử dụng này không quá bất thường như tôi nghĩ. – buhtz