2016-06-26 13 views
0

を削除しません、私は例外TypeErrorを得るのいずれか:「ラベル」オブジェクトには、属性「のGetItem」というエラー を持っていないか、それだけでは削除されません。作成されたラベルremove_widgetは、私が困っkivy でremove_widgetを使用してウィジェットを削除を抱えているウィジェット

私は適切にこれは意味がありませんどのように...

Builder.load_string(""" 


<MenuScreen>: 
    FloatLayout: 
     #cols: 2 
     #rows: 2 
     size: 800,480 

     Button: 
      id: resetmash 
      text: "Reset" 
      font_size: 30 
      size_hint: None, None 
      background_color: 1,0.88,0.882,1 
      size: 100,100 
      pos: 1450,800 
      on_press: root.resetmash() 
     Button: 
      id: btn_0 
      text: "+" 
      size_hint: None, None 
      size: 100,100 
      pos: 550,700 
      on_press: root.listmashsteps() 


""") 


class MenuScreen(Screen): 



    def resetmash(self): 
     self.remove_widget(Label()) 

    def listmashsteps(self, *largs): 
     self.add_widget(Label(text="Step")) 


    def __init__(self, **kwargs): 
     super(MenuScreen, self).__init__(**kwargs) 



sm = ScreenManager() 
menu_screen = MenuScreen(name='menu') 
sm.add_widget(menu_screen) 

class TestApp(App): 

    def build(self): 
     return sm 


if __name__ == '__main__': 
    TestApp().run() 
+0

あなたがここに達成しようとしているかわかりません。 – jligeza

+0

ボタンをクリックするとラベルが作成され、別のボットンをクリックしてラベルを削除したい – fastmhc

+0

これらのラベルのボックス(またはグリッド)レイアウトを作成するので、ラベルを削除するには 'remove_children() 'その箱に。 – jligeza

答えて

1
self.remove_widget(Label()) 

ことを確認したウィジェットを参照することではなくはないと思う - あなたはちょうどそのラベルをインスタンス化し、それがにISNので、既にウィジェットに追加されているため、削除することはできません。後に続いて

self.label = Label(text='Step') 
self.add_widget(self.label) 

:あなたはそれを追加するとき

は代わりに、のようなものをラベルへの参照を格納

self.remove_widget(self.label) 
+0

をフォローアップしてください。 (self、* largs): self.label = Label(text = "Step" + step)then self(self、* largs)のようなループ内に複数のラベルウィジェットを作成している場合、範囲内のステップのために .remove_widget(self.label)は、最後に作成されたラベルのみを削除します。前に作成したすべてのラベルを削除する方法はありますか?私はself.remove_widget(self.label [0])を書くことができませんので、作成されたラベルは索引付けされていないようです。 – fastmhc

+0

実際にコードが何をするかを見てください。 'self.label'を' Label'のインスタンスあなたが作成したもの。複数のラベルへの参照を保存する場合は、コードを適切に変更する必要があります。 'self.labels = []'と 'self.labels.append(Label(text = '...'))'とすると、後でself.labels内のラベルを変更することができます。 – inclement

+0

再度お返事ありがとうございます。 'AttributeError: 'list'オブジェクトに 'bind'という属性がありませんというエラーが表示されます – fastmhc

関連する問題