【发布时间】:2017-10-04 03:47:02
【问题描述】:
嗨:我想在 kivy 上做一个简单的应用程序,但循环出错。
说明:我在 ScreenManager 中有 10 个屏幕,我需要清除除其中 4 个之外的所有小部件。
一个按钮 on_press 调用 ScreenManager 的 update() 方法。
错误:在 update() 方法中,我有以下代码:
self.static_screens = ['list', 'new', 'conf', 'edit'] # declared in __init__ method
def update():
for screen in self.screens:
if screen.name not in self.static_screens:
self.remove_widget(screen)
正常执行,但仅从 ScreenManager 中删除一个小部件(屏幕)
【问题讨论】:
-
您是否正在改变您正在迭代的对象?如果
self.remove_widget(screen)突变self.screens,那将是你的问题。你需要重构。 -
感谢您的回答,我该如何解决?,创建一个副本?
-
看我的回答。简而言之,创建一个临时列表来存储您要删除的屏幕。
标签: python-2.7 kivy