Kivy引用id by string

时间:2016-01-15 16:11:58

标签: python string reference kivy

我正在构建一个具有20x20标签网格的应用程序,我将其设置为ids id: x1y1, id: x1y2, ... , id: x20y20等。我希望能够通过传递字符串来引用id,并修改其中的文本,使用类似的东西;

self.ids.name("x1y1").text = "Anything"

我看过dir(self.ids)dir(self.ids.items())等,但似乎无法弄明白。它甚至可能吗?

我可以创建if statements喜欢的列表

if str(passedString) == "x1y1":
    self.id.x1y1.text == "Anything"
if str(passedString) == "x1y2":
    self.id.x1y2.text == "Anything"

虽然我认为这是非常糟糕的做法,但也考虑到我需要400 if statements! - 当然我可以写一个小帮手脚本来为我编写所有这些代码,但同样,它并不理想。

编辑: 我看了一眼;

for key, val in self.ids.items():
    print("key={0}, val={1}".format(key, val))

哪个印刷;

key=x1y2, val=<kivy.uix.label.Label object at 0x7f565a34e6d0>
key=x1y3, val=<kivy.uix.label.Label object at 0x7f565a2c1e88>

可能会让你/某人知道去哪里和/或做什么。

1 个答案:

答案 0 :(得分:1)

您只想通过ID的字符串获取引用?您可以使用普通的字典查找(因为ID实际上是一个字典)。

the_string = 'x1y1'
the_reference = self.ids[the_string]
the_reference.text = 'the_new_text'