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

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


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

或者有没有更好的方法来实现这一点?


湖上湖
浏览 190回答 1
1回答

万千封印

您必须使用名称getattr()来获取属性。screen_list = ['tcs_screen', 'eclss_screen', 'gnc_screen']for e in screen_list:    getattr(self, e).ids.statusicon.source = "/imgs/..."
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python