簡體   English   中英

為什么我的Enaml ImageView不按比例縮小?

[英]Why won't my Enaml ImageView scale down?

這是一個簡單的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以允許縮小大圖像?

版本:

  • 在Win32上的Python 3.6.3(v3.6.3:2c5fed8,2017年10月3日,18:11:49)[MSC v.1900 64位(AMD64)]
  • enaml == 0.10.2
  • PyQt5 == 5.10.1

resist_widthresist_height設置為'weak'是正確的答案。 您可以在小部件上設置其他約束以使其具有首選大小:

ImageView: 
    resist_width = 'weak'
    resist_height = 'weak'
    constraints = [(width == 640) | 'weak', (height == 480) | 'weak']

如果我加

        resist_width = 'weak'
        resist_height = 'weak'

這將使我縮小規模。

但是,默認情況下也會以較小的尺寸打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM