基本Kivy Q,定位画布儿童{kivy language}

时间:2014-01-18 19:29:47

标签: python canvas kivy

晚安所有

只是想知道是否有人可以分享信息,开始玩kivy,所有我想要的是有一个基本的画布小部件并在屏幕顶​​部放置一个矩形,使用co-ord 0,0绘制它作为底部。

它还提出了一个问题,即我可以通过使用,例如0,400来设置在顶部附近,但是如何使它始终在顶部和分辨率独立。我正在努力创建一个小应用程序作为学习它的一部分,并重新执行到目前为止我在python中学到的东西。

感谢您的任何见解

canvas:
        Rectangle:
            pos: self.pos
            size: self.width , self.height / 10

    Label:
        font_size: 25
        top: root.top
        text:"Score"


    Label:
        font_size: 25
        top: root.top
        text:"4000 points"

1 个答案:

答案 0 :(得分:1)

在kivy画布点(0,0)实际上是左下角。您可以轻松自己计算最高排名:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.properties import ListProperty

kv_string = '''
<MyWidget>:
    r_size: [root.size[0]/2, root.size[1]/2]
    canvas:
        Color:
            rgb: 0.1, 0.6, 0.3
        Rectangle:
            size: root.r_size
            pos: 0, root.size[1]-root.r_size[1]
'''

Builder.load_string(kv_string)

class MyWidget(Widget):
    r_size = ListProperty([0, 0])

class TestApp(App):
    def build(self):
        return MyWidget()

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

您还可以使用FloatLayout,使用pos_hintsize_hint属性设置与分辨率无关的子小部件大小和位置,然后在每个此类小部件的边框内绘制内容:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder

kv_string = '''
<MyWidget>:
    Widget:
        pos_hint: {'center_y': 0.5, 'center_x': 0.5}
        size_hint: 0.2, 0.2
        canvas:
            Color:
                rgb: 0.1, 0.6, 0.3
            Rectangle:
                size: self.size
                pos: self.pos
    Widget:
        pos_hint: {'center_y': 0.5, 'center_x': 0.2}
        size_hint: 0.2, 0.2
        canvas:
            Color:
                rgb: 0.1, 0.6, 0.3
            Rectangle:
                size: self.size
                pos: self.pos
    Widget:
        pos_hint: {'center_y': 0.5, 'center_x': 0.8}
        size_hint: 0.2, 0.2
        canvas:
            Color:
                rgb: 0.1, 0.6, 0.3
            Rectangle:
                size: self.size
                pos: self.pos
    Widget:
        pos_hint: {'center_y': 0.2, 'center_x': 0.5}
        size_hint: 0.2, 0.2
        canvas:
            Color:
                rgb: 0.1, 0.6, 0.3
            Rectangle:
                size: self.size
                pos: self.pos
    Widget:
        pos_hint: {'center_y': 0.8, 'center_x': 0.5}
        size_hint: 0.2, 0.2
        canvas:
            Color:
                rgb: 0.1, 0.6, 0.3
            Rectangle:
                size: self.size
                pos: self.pos
'''

Builder.load_string(kv_string)

class MyWidget(FloatLayout):
    pass

class TestApp(App):
    def build(self):
        return MyWidget()

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