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

Changing kivy widget properties for multiple screens from a loop

我的应用程序中有一堆屏幕都有相同的图标,我总是想一起更改。所以我目前对其进行了硬编码,每次我添加一个新屏幕时我都必须添加一个新行并且它变得很麻烦:

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/..."

或者有更好的方法来完成这个吗?

谢谢

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

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

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