动态添加kivy小部件

时间:2014-12-12 16:40:26

标签: kivy

我可以添加一个新的小部件,但它没有正确连接。画布看起来像是在错误的坐标系中。

我的.py

class Ship(Widget):
   def __init__(self, **kwargs):
       super(Ship, self).__init__(**kwargs)
       self.vel = 10

class Game(Widget):

    def __init__(self, **kwargs):
       super(Game, self).__init__(**kwargs)
       self.ship = Ship()
       self.add_widget(self.ship)
       self.ship.center = self.center

我的.kv

<Ship>
   size: 50, 50
   canvas:
       Color:
           rgb: 0, 0, 1
       Rectangle:
           size: self.size
           pos: self.pos
<Game>
   canvas.before:
       Color:
           rgb: 0, 0, 0
       Rectangle:
           size: self.size
           pos: self.pos

这会创建图像: enter image description here

我希望蓝盒子成为死亡中心。

1 个答案:

答案 0 :(得分:1)

在指定中心位置时,尚未计算布局。默认情况下,每个小部件的起始大小为100,100,并且您的Ship正好位于该100,100区域的中心。如果您希望Ship保持居中,则需要绑定属性:

class Game(Widget):
    def __init__(self, **kwargs):
       super(Game, self).__init__(**kwargs)
       self.ship = Ship()
       self.add_widget(self.ship)
       self.bind(center=self.ship.setter('center'))