""" Templates/ScaleWidget ===================== .. versionadded:: 1.0.0 Base class for controlling the scale of the widget. .. note:: See `kivy.graphics.Scale `_ for more information. Kivy ---- .. code-block:: python from kivy.animation import Animation from kivy.lang import Builder from kivy.properties import NumericProperty from kivy.uix.button import Button from kivy.app import App KV = ''' Screen: ScaleButton: size_hint: .5, .5 pos_hint: {"center_x": .5, "center_y": .5} on_release: app.change_scale(self) canvas.before: PushMatrix Scale: x: self.scale_value_x y: self.scale_value_y z: self.scale_value_x origin: self.center canvas.after: PopMatrix ''' class ScaleButton(Button): scale_value_x = NumericProperty(1) scale_value_y = NumericProperty(1) scale_value_z = NumericProperty(1) class Test(App): def build(self): return Builder.load_string(KV) def change_scale(self, instance_button: Button) -> None: Animation( scale_value_x=0.5, scale_value_y=0.5, scale_value_z=0.5, d=0.3, ).start(instance_button) Test().run() KivyMD ------ .. code-block:: python from kivy.animation import Animation from kivy.lang import Builder from kivymd.app import MDApp from kivymd.uix.button import MDRaisedButton from kivymd.uix.templates import ScaleWidget KV = ''' MDScreen: ScaleButton: size_hint: .5, .5 pos_hint: {"center_x": .5, "center_y": .5} on_release: app.change_scale(self) elevation:0 ''' class ScaleButton(MDRaisedButton, ScaleWidget): pass class Test(MDApp): def build(self): return Builder.load_string(KV) def change_scale(self, instance_button: MDRaisedButton) -> None: Animation( scale_value_x=0.5, scale_value_y=0.5, scale_value_z=0.5, d=0.3, ).start(instance_button) Test().run() """ __all__ = ("ScaleWidget",) import os from kivy.lang import Builder from kivy.properties import NumericProperty from kivymd import uix_path with open( os.path.join(uix_path, "templates", "scalewidget", "scalewidget.kv"), encoding="utf-8", ) as kv_file: Builder.load_string(kv_file.read()) class ScaleWidget: """Base class for controlling the scale of the widget.""" scale_value_x = NumericProperty(1) """ X-axis value. :attr:`scale_value_x` is an :class:`~kivy.properties.NumericProperty` and defaults to `1`. """ scale_value_y = NumericProperty(1) """ Y-axis value. :attr:`scale_value_y` is an :class:`~kivy.properties.NumericProperty` and defaults to `1`. """ scale_value_z = NumericProperty(1) """ Z-axis value. :attr:`scale_value_z` is an :class:`~kivy.properties.NumericProperty` and defaults to `1`. """