这是一个简单的Enaml文件,用于显示单个图像 - 800x1210 pixel image。
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允许缩小大图像?
版本:
答案 0 :(得分:1)
将resist_width
和resist_height
设置为'weak'
是正确的答案。您可以在窗口小部件上设置其他约束,以使其具有首选大小:
ImageView:
resist_width = 'weak'
resist_height = 'weak'
constraints = [(width == 640) | 'weak', (height == 480) | 'weak']
答案 1 :(得分:0)
如果我添加
resist_width = 'weak'
resist_height = 'weak'
它可以让我缩小规模。
但是,默认情况下它也会以较小的尺寸打开。