Почему мой Enaml ImageView не уменьшится? - PullRequest
0 голосов
/ 30 мая 2018

Вот простой файл 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

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Установка resist_width и resist_height на 'weak' - правильный ответ.Вы можете установить другие ограничения для виджета, чтобы придать ему предпочтительный размер:

ImageView: 
    resist_width = 'weak'
    resist_height = 'weak'
    constraints = [(width == 640) | 'weak', (height == 480) | 'weak']
0 голосов
/ 31 мая 2018

Если я добавлю

        resist_width = 'weak'
        resist_height = 'weak'

, это позволит мне уменьшить масштаб.

Однако по умолчанию он также открывается в меньшем размере.

...