kivy中的文本标签未更新

时间:2015-12-11 14:59:30

标签: python kivy

我正在尝试显示玩家在Kivy游戏中留下的尝试次数。然而,虽然玩家实际上可以用尽游戏中的尝试,但是在UI中没有更新剩余的尝试。我怀疑这是因为Label只显示一次,需要在之后更新,或者它可能与Kivy ID有关。

这里是代码的简化版本

在main.py上我们有:

class TreasureHuntGrid(GridLayout):
    attempts = 8
    board = [[0,0][0,0]]
    def __init__(self, *args, **kwargs):
        super(TreasureHuntGrid, self).__init__(*args, **kwargs)

    def lowerattempts(self, button):
        if condition:
            self.attempts = self.attempts - 1

在我们的.kv文件中:

AnchorLayout:
  anchor_y: 'bottom'
  anchor_x: 'left'
  TreasureHuntGrid:
     id: board
     size: min(self.parent.size), min(self.parent.size)
     size_hint: None, None
  Label:
     size_hint: (1.75, 1)
     height: sp(40)
     text:'You have {} attempts left'.format(board.attempts)

1 个答案:

答案 0 :(得分:1)

让你的尝试变量为kivy属性,然后kv语言将在更改时自动绑定到更新:

from kivy.properties import NumericProperty

class TreasureHuntGrid(GridLayout):
    attempts = NumericProperty(0)
    ...