从循环更改多个屏幕的kivy小部件属性

时间:2018-09-10 23:01:31

标签: python kivy kivy-language

我的应用程序中有一堆屏幕,所有的屏幕都有相同的图标,我一直想一起更改。因此,目前我已经对其进行了硬编码,并且每次添加新屏幕时都必须添加新行,并且变得越来越麻烦:

self.tcs_screen.ids.statusicon.source = "/imgs/..."
self.eclss_screen.ids.statusicon.source = "/imgs/..."
self.gnc_screen.ids.statusicon.source = "/imgs/..."
...

是否可以通过循环浏览屏幕列表来执行此操作?我一直在尝试以下操作,但均未成功(如何将变量插入属性分配中?):

ScreenList = ['tcs_screen', 'eclss_screen', 'gnc_screen']
for x in xrange(len(ScreenList)):
        self.ScreenList[x].ids.statusicon.source = "/imgs/..."

还是有更好的方法来做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

您必须使用getattr()来使用名称来获取属性。

screen_list = ['tcs_screen', 'eclss_screen', 'gnc_screen']

for e in screen_list:
    getattr(self, e).ids.statusicon.source = "/imgs/..."