Python 使用kivy参考kv中项目的问题

Python 使用kivy参考kv中项目的问题,python,kivy,Python,Kivy,当参考kv中的kivy项目时,为什么不能使用变量 self.ids.top_left.background_normal = "x.png" 当“top_left”直接是kv文件中的一个ID,“x.png”直接引用图片时,这种方法可以很好地工作。但当我说这样的话: button_pressed = top_left picture_touse = "x.png" self.ids.button_pressed.background_normal = picture_touse 然后它断开并给

当参考kv中的kivy项目时,为什么不能使用变量

self.ids.top_left.background_normal = "x.png"
当“top_left”直接是kv文件中的一个ID,“x.png”直接引用图片时,这种方法可以很好地工作。但当我说这样的话:

button_pressed = top_left
picture_touse = "x.png"
self.ids.button_pressed.background_normal = picture_touse
然后它断开并给我一个错误:

AttributeError: 'super' object has no attribute '__getattr__'

如何使用生成的引用引用kv项目?

无需担心,只要找到答案,对于任何想要这样做的人,只要创建:

检查_ref={}

(随你怎么称呼它)然后在引用ID时,在将其余信息放在方括号中之前,请先称呼它,如:

self.ids.check_ref[button_pressed].background_normal = check_ref[picture_touse]

因为kivy将所有标记为id的小部件都放在字典类型属性中。因此,您可以使用dict[key]引用它。解决办法是替换

self.ids.button_pressed.background_normal = picture_touse

一小条 输出

顺便说一句,我已经尝试过在答案周围使用[]方括号,被告知这可能会解决问题,使其成为一个dict查找,但使用方括号我会得到指向第一个括号的语法错误,因此python不接受这一点。我还试图限制添加str(左上角)的类型,以确保它被视为字符串,但没有任何更改。太棒了,可以使用变量!,我必须在这里明确说明(它应该进入标题/问题),这样谷歌才能找到这个以及id或id变量的答案,太棒了
self.ids[button_pressed].background_normal = picture_touse
class ScreenTwo(Screen, Widget):

    def methodforbuttonpress(self, button_pressed):
        kivy_logo = "kivy-logo-black-64.png"
        self.ids[button_pressed].background_normal = kivy_logo