Skip to content

Instantly share code, notes, and snippets.

@tshirtman
Last active October 28, 2019 21:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tshirtman/08bc589d47128c465fa537cc0ae9be5f to your computer and use it in GitHub Desktop.
Save tshirtman/08bc589d47128c465fa537cc0ae9be5f to your computer and use it in GitHub Desktop.
from kivy.app import App
from kivy.lang import Builder
from kivy.factory import Factory
KV = '''
<AutoScaleLabel@Label>:
scale: 1
step: self.font_size // 2
interpolate: True
_params: divmod(self.scale, self.step or 1)
font_size: self._params[0] * (self.step or 1)
_scale_factor: (1 + self._params[1] / (self.font_size or 1)) if self.interpolate else 1
canvas.before:
PushMatrix:
Scale:
origin: self.center
xyz: self._scale_factor or 1, self._scale_factor or 1, 1
canvas.after:
PopMatrix:
FloatLayout:
BoxLayout:
orientation: 'vertical'
AutoScaleLabel:
text: 'test'
scale: slider.value
interpolate: interpolate.active
GridLayout:
cols: 2
Label:
text: 'font_size'
Slider:
id: slider
min: .1
max: 500
Label:
text: 'interpolate?'
CheckBox:
id: interpolate
'''
class Application(App):
def build(self):
return Builder.load_string(KV)
if __name__ == "__main__":
Application().run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment