Kivy(Python)格式化问题

时间:2015-12-29 18:52:02

标签: android python formatting kivy screens

我无法格式化这些椭圆,以便它们出现在屏幕的中央。我已经尝试了所有我能想到的东西。我用Kivy语言编写的Button按照它的意思进入了监视器的角落,但是Target类中的所有内容都拒绝服从我的格式,无论如何都会在屏幕的左下角绘制。

class Target(Label):
    def __init__(self, **kwargs):
        super(Target, self).__init__(**kwargs)
        with self.canvas:
            Color(1,1,1)
            d = 400
            Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))

            Color(0,0,0)
            d = 320
            Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))

            Color(0,0,1)
            d = 240
            Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))

            Color(1,0,0)
            d = 160
            Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))

            Color(1,1,0)
            d = 80
            Ellipse(pos=((self.center_x - d / 2), (self.center_y - d / 2)), size=(d,d))

这是关于在小部件上绘制圆圈的所有原始python代码。这是处理屏幕的Kivy代码。

<ScoringLayout>:
    FloatLayout:
        Target:
            center: self.parent.center
            size_hint: 0.2, 0.3

        Button:
            text: "Return"
            on_release: app.root.current = "main"
            font_size: 15
            size_hint: 0.3 ,0.2
            pos_hint: {"right": 1, "bottom": 1}

评分布局是切换到的屏幕的布局,损坏代码下方的按钮链接回应用程序的主屏幕。

我还应该说,我的目标是将其与其他代码一起打包为Android应用。

1 个答案:

答案 0 :(得分:1)

椭圆是在运行__init__时根据self.center_x绘制的,此时它仍然是(50,50)的默认值。

您可以使用kv语言修复它,或手动创建绑定到一个函数,该函数在窗口小部件位置或大小更改时更新椭圆的位置和大小。