Вот простой файл Enaml для отображения одного изображения - 800x1210 пикселей .
from enaml.widgets.api import Window, Container, ImageView
from enaml.image import Image
enamldef ImageViewResizeWindow(Window):
Container:
ImageView:
image << Image(data=open("Mona_Lisa.jpg", "rb").read())
scale_to_fit = True
allow_upscaling = False
preserve_aspect_ratio = True
Окна открываются достаточно большими, чтобы вместить все изображение, но когдаЯ пытаюсь изменить размер окна, оно не будет уменьшаться - изображение не может быть уменьшено, даже если scale_to_fit
- True.С другой стороны, это позволит увеличить размер окна, но (правильно) не увеличит масштаб изображения - оно просто добавляет больше пространства вокруг него.
Экспериментируя, я установил allow_upscaling
в True,и это позволило изображению расти, но не уменьшаться.Он знает, как масштабировать, но не уменьшает его.
Хорошо, возможно, ImageView должен иметь минимальный размер, поэтому я добавил:
minimum_size = (100, 100)
Это должнопереопределить «интеллектуальный минимальный размер», который был рассчитан для виджета ImageView, но без разницы.
Я новичок в Enaml, поэтому я подозреваю, что недопонимание базового уровня.
Что мне нужносделать, чтобы получить ImageView, чтобы разрешить масштабирование большого изображения при изменении размера окружающего окна?
Версии:
- Python 3.6.3 (v3.6.3: 2c5fed8,3 октября 2017, 18:11:49) [MSC v.1900 64 бит (AMD64)] на win32
- enaml == 0.10.2
- PyQt5 == 5.10.1