Could someone kindly explain to me this coordinate conversion situation here? I don't get it..

24 views
Skip to first unread message

Philipp Hellmann

unread,
Jul 23, 2018, 7:59:56 AM7/23/18
to Kivy users support
I am trying to understand the coordinates of widgets and their relations to each other.

This is how it looks like



Here is my sample code:
import kivy
kivy.require('1.10.1')

from kivy.app import App
from kivy.base import Builder

from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Line
from kivy.uix.label import Label
from kivy.graphics import Color

Builder.load_string("""
#:import random random

<TestScreen>:
   size_hint:.5,.5
   pos_hint: {'right': 0.8,'center_y':0.75}
   canvas:
       Color:
           rgba: [random.random() for x in range(3)] + [0.5]
       Rectangle:
           size:self.size
   Button:
       canvas:
           Color:
               rgba: [random.random() for x in range(3)] + [0.5]
           Rectangle:
               pos: _button.pos
               size:self.size
       id: _button
       text:'PrintPos'
       size_hint: .3,.3
       pos: 200,200
       on_press:root.showPos(*args)
""")

class TestScreen(RelativeLayout):

    def showPos(self, sender):
       print("Pos: {}".format(sender.pos))
       print("Local Pos: {}".format(sender.to_local(*sender.pos)))
       print("Parent Pos: {}".format(sender.to_parent(*sender.pos)))
       print("Parent Local Pos: {}".format(sender.parent.to_local(*sender.pos)))
       print("relative Parent Local Pos: {}".format(sender.parent.to_local(*sender.pos, relative=True)))
       print("Parent Parent Pos: {}".format(sender.parent.to_parent(*sender.pos)))
       print("relative Parent Parent Pos: {}".format(sender.parent.to_parent(*sender.pos, relative=True)))
       print("Widget Pos: {}".format(sender.to_widget(*sender.pos)))
   
class RelativeCoordinatesApp(App):
   def build(self):
       return TestScreen()

if __name__ == '__main__':
   RelativeCoordinatesApp().run()



This is the output:

Pos: [200, 200]
Local Pos: (200, 200)
Parent Pos: (200, 200)
Parent Local Pos: (-40.0, -100.0)
relative Parent Local Pos: (-40.0, -100.0)
Parent Parent Pos: (440.0, 500.0)
relative Parent Parent Pos: (440.0, 500.0)
Widget Pos: (-40.0, -100.0)


How is the Parent Local Pos value calculated?
I cant wrap my head around this. 


Reply all
Reply to author
Forward
0 new messages