Chazara
Chazara

Reputation: 169

Kivy Reference id by string

I'm building an app that has a grid of 20x20 labels which I've set as ids id: x1y1, id: x1y2, ... , id: x20y20 etc. I want to be able to reference the id by passing a string, and modify the text within, using something like;

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

I've had a look at dir(self.ids), dir(self.ids.items()) etc but can't seem to figure it out. Is it even possible?

I could create a list of if statements like;

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

Although I feel that this is incredibly bad practice, also considering I'd need 400 if statements! - Sure I could write a little helper-script to write all this code out for me, but again, it's not ideal.

EDIT: I had a look at;

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

Which printed;

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

Might give you/someone an idea of where to go and/or what to do.

Upvotes: 0

Views: 305

Answers (1)

inclement
inclement

Reputation: 29488

You just want to get the reference via a string of the id? You can use normal dictionary lookup (as ids is really a dict).

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

Upvotes: 1

Related Questions