码迷,mamicode.com
首页 > 其他好文 > 详细

kivy学习之路--坐标系和坐标转换函数

时间:2015-06-09 23:25:25      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

      参考kivy文档796页,kivy大多数控件默认使用绝对坐标系,即window坐标系,原点位于屏幕window左下角,所有控件的坐标都是相对屏幕左下角的绝对坐标。

      RelativeLayout使用的是相对坐标系,即relative 坐标系,如果控件树中存在RelativeLayout,那么隶属于该布局的控件的坐标原点是该布局的左下角,而不是屏幕左下角。如果存在多个RelativeLayout,那么控件以最靠近它的RelativeLayout类型的父控件的左下角为坐标原点。如果控件自身也是RelativeLayout类型,但仍然以最靠近它的RelativeLayout类型的父控件的坐标作为坐标系,这种相对坐标系称为parent 坐标系。反之,如果以自身作为坐标系,则是local坐标系。

其他使用相对坐标系的控件有Scatter、ScatterLayout、ScrollView。

     坐标转换函数

     这类函数用于转换window、parent、local这三类坐标系的坐标,都接收三个参数,x,y,relative=False(relative参数功能不详,我测试不出True和False情况的区别,求大神告知)

to_widget    window坐标转local坐标,

to_local      parent坐标转local坐标

to_parent     local坐标转parent坐标

to_window    local坐标转window坐标

以下为测试代码

#coordinate.kv

 1 from kivy.app import App
 2 from kivy.uix.boxlayout import BoxLayout
 3 
 4 
 5 class MainScreen(BoxLayout):
 6     def btnright(self,obj):
 7         param = list(obj.pos)
 8         param.append(False)
 9         print Right: {}.format(self.ids.btn2.to_parent(*param))
10         
11 class TestApp(App):
12     def build(self):
13         return MainScreen()
14 if __name__ == "__main__":
15     TestApp().run()

#test.kv

<MainScreen>:
    Label:
        text: Left
    Button:
        text: Middle
        on_touch_down: print(Middle: {}\n.format(args[1].pos))
    RelativeLayout:
        on_touch_down: print(Box: {}.format(args[1].pos))
        Button:
            id:btn2
            text: Right
            on_touch_down: root.btnright(args[1])

 

kivy学习之路--坐标系和坐标转换函数

标签:

原文地址:http://www.cnblogs.com/conda/p/4564817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!