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()