下面是一个显示单个图像的简单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
是真的。另一方面,它将允许窗口调整到更大的大小,但(正确地)不会放大图像-它只是在图像周围添加更多空间。
在实验中,我将allow_upscaling
设置为True,它允许图像增长,但不能缩小。它知道如何扩展,但不会缩小规模。
好吧,也许ImageView必须有一个最小的大小,所以我添加了:
minimum_size = (100, 100)
这应该覆盖为ImageView小部件计算的“智能最小尺寸”,但没有区别。
我是新接触Enaml的,所以我怀疑这是一个基本的误解。
当周围的窗口调整大小时,我需要做什么才能让ImageView允许缩小大图像?
版本:
win32
上的
发布于 2018-06-04 01:53:57
将resist_width
和resist_height
设置为'weak'
是正确答案。您可以在小部件上设置其他约束,以使其具有首选大小:
ImageView:
resist_width = 'weak'
resist_height = 'weak'
constraints = [(width == 640) | 'weak', (height == 480) | 'weak']
发布于 2018-05-31 10:14:38
如果我添加
resist_width = 'weak'
resist_height = 'weak'
它将允许我缩小规模。
但是,默认情况下,它也会以较小的大小打开。
https://stackoverflow.com/questions/50609734
复制相似问题