こんにちは:私はkivy上で単純なアプリケーションを実行しようとしていて、ループでエラーが発生しています。forループがkivy pythonで動作しない
説明:私は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'を変更すると、それが問題になります。あなたはリファクタリングする必要があります。 –
あなたの答えをありがとう、どのように私はそれを修正することができますか?、コピーを作成しますか? – Krilosax
私の答えを見てください。要するに、削除する画面を保存するための一時的なリストを作成することです。 –