The Scatter class allows a user to drag, scale, and rotate any widget, which is under its control.
Besides the Scatter class, there has to be a Widget or any class based on Widget, like the Label or Image. The root class is based on RelativeLayout. We always have to include the App class.
The widget, scatter, and root class are created here. They are empty and will be defined in the kv file.
The app class must be defined and run. In the build, we return the root class.
# ex42.py from kivy.uix.scatter import Scatter from kivy.uix.widget import Widget from kivy.uix.relativelayout import RelativeLayout from kivy.app import App class SquareWidget(Widget): pass class ScatterWidget(Scatter): pass class Ex42(RelativeLayout): pass class Ex42App(App): def build(self): return Ex42() if __name__=='__main__': Ex42App().run()
In the kv file, we define the SquareWidget. It is a yellow square.
The background is a gray color.
The id of the ScatterWidget is given, so the 3 labels can refer to it's properties. The SquareWidget, is embedded, inside the Scatter. The first label, indicates the rotation, using the rotation value.
Labels 2 and 3 indicate, the scale, and the position, of the widget.
# ex42.kv <SquareWidget>: size: 250,250 canvas: Color: rgb: [1,1,0] Rectangle: size: self.size pos: self.pos <Ex42>: canvas: Color: rgb: .5,.5,.5 Rectangle: size: self.size pos: self.pos ScatterWidget: id: square_widget_id SquareWidget: Label: text: 'Rotation: ' + str(square_widget_id.rotation) size_hint: .1,.1 pos: 500,100 Label: text: 'Scale: ' + str(square_widget_id.scale) size_hint: .1,.1 pos: 500,200 Label: text: 'Position: ' + str(square_widget_id.pos) size_hint: .1,.1 pos: 500,300
Demo of App on Youtube
Python:
ReplyDeleteGood Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
https://www.emexotechnologies.com/online-courses/python-training-in-electronic-city/
thank you.
ReplyDeleteweb programming tutorial
welookups