mirror of
https://github.com/liberatedsystems/Sideband_CE.git
synced 2024-09-03 04:13:27 +02:00
151 lines
3.2 KiB
Python
151 lines
3.2 KiB
Python
"""
|
|
Templates/ScaleWidget
|
|
=====================
|
|
|
|
.. versionadded:: 1.0.0
|
|
|
|
Base class for controlling the scale of the widget.
|
|
|
|
.. note:: See `kivy.graphics.Scale
|
|
<https://kivy.org/doc/stable/api-kivy.graphics.html#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`.
|
|
"""
|