Kivy尺寸变化改变定位

时间:2015-07-13 02:30:17

标签: python kivy

我想我仍然没有得到Kivy的定位。我有这个尺寸(100,10)的酒吧(饥饿酒吧),我想把它放在窗户的中间。该栏每秒将改变其大小(-5,0)。但是,按照我现在设置的方式,它的位置也随着大小的变化而变化。这是代码的一部分。

class HungerBar(Widget):
    def hunger_dec(self):
        if (self.size[0] > 0):
            self.size[0] = self.size[0] - 5
    def hunger_inc(self, increase):
        if (self.size[0] + increase < 100):
            self.size[0] = increase + self.size[0]

class ShootingGame(Widget):
    hungerBar = HungerBar()

    def __init__(self, **kwargs):
        super(ShootingGame, self).__init__(**kwargs)
        randX = random.choice([0.1, 0.2, 0.8, 0.9])
        self.enemy = self.drawEnemy(randX)
        Clock.schedule_interval(self.enemy.drawWalking, 1)

        self.hungerBar = self.drawBar()
        Clock.schedule_interval(self.hungerBar.hunger_dec, 1)


    def drawBar(self):
        bar = HungerBar()
        self.add_widget(self.hungerBar)
        return bar

class GameScreen(Screen):
    def __init__(self, **kwargs):
        super(GameScreen, self).__init__(**kwargs)
        self.game = ShootingGame()
        self.add_widget(self.game)
        Clock.schedule_interval(self.game.update, 1.0 / 60.0)

sm = ScreenManager()
game_screen = GameScreen(name='game')
sm.add_widget(game_screen)

class ShootingApp(App):
    def build(self):
        return sm

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

kv文件:

<HungerBar>:
    Color: 
        rgb: (0, 1, 1)
    canvas:
        Rectangle:
            pos: root.width/2, 30
            size: 100, 10

谢谢!

1 个答案:

答案 0 :(得分:0)

您定义了与HungerBar尺寸相关的位置:

canvas:
    Rectangle:
        pos: root.width/2, 30

X是宽度的一半。 root这里引用的是顶部元素HungerBar