community icon indicating copy to clipboard operation
community copied to clipboard

AnchorLayout prevents child widgets from controlling their height

Open nanouasyn opened this issue 1 year ago • 0 comments

Software Versions

  • Python: 3.11.3
  • OS: Linux Mint 19.1 Tessa
  • Kivy: 2.3.0

Describe the bug When a widget that sets its height based on its width is placed in an AnchorLayout, the height of the widget does not change according to its width set by the AnchorLayout. AnchorLayout controls the height of such a widget, ignoring the outright prohibition (size_hint_y = None).

To Reproduce

Put the Image widget, which increases its height based on its width and image proportions, inside the AnchorLayout. Set size_hint_y to None to prevent AnchorLayout from controlling the height of the Image.

from kivy.lang import Builder
from kivy.app import runTouchApp

runTouchApp(Builder.load_string("""
AnchorLayout:
    anchor_y: 'center'
    Image:
        source: 'data/logo/kivy-icon-256.png'
        fit_mode: 'fill'
        size_hint_y: None
        height: self.width * self.texture_size[1] / self.texture_size[0]
"""))

It is expected that when changing the width of the AnchorLayout, the Image will change its height. But in fact, the height of the Image does not change:

https://github.com/kivy/kivy/assets/27895729/09cc4994-f192-4c57-a73b-02e21554a810

Expected behavior

Image should change size, filling the window in width and keeping the proportions.

https://github.com/kivy/kivy/assets/27895729/3032f785-775d-441d-8ec1-0e27b104983b

nanouasyn avatar Apr 03 '24 17:04 nanouasyn