从循环中更改多个屏幕的 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/..."
我的应用程序中有一堆屏幕都有相同的图标,我总是想一起更改。所以我目前对其进行了硬编码,每次我添加一个新屏幕时我都必须添加一个新行并且它变得很麻烦:
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/..."