2016-06-26 1 views
0
나는 문제 중 하나 형식 오류를 얻을 I kivy 에 remove_widget 사용하여 위젯을 제거하는 데

을 제거하지 않습니다 생성 된 레이블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

버튼을 클릭하면 Label이 생성되고 다른 botton을 클릭하여 레이블을 제거합니다. – fastmhc

+0

그런 다음 해당 레이블의 상자 (또는 격자) 레이아웃을 작성합니다. 레이블을 제거하려면'remove_children() '그 상자에. – jligeza

답변

1
self.remove_widget(Label()) 

이 이해가되지 않는 방법을 잘 만든 위젯을 참조하지만 아니에요 생각 - 그것은 외설 그래서 당신은, 그 라벨을 인스턴스화 위젯에 이미 추가되었으므로 제거 할 수 없습니다. 나중에 그런

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

: 당신이 그것을 추가 할 때

대신, 뭔가를 레이블에 대한 참조를 저장

self.remove_widget(self.label) 
+0

후속 조치. (self, * largs) : 범위의 단계 (0,4)에 대해 : self.label = Label (text = "Step"+ step) 그런 다음 self .remove_widget (self.label)은 마지막으로 생성 된 레이블 만 제거합니다. 이전에 작성된 모든 레이블을 제거하는 방법이 있습니까? 생성 된 레이블은 색인이 생성되지 않으므로 self.remove_widget (self.label [0]) – fastmhc

+0

코드가 실제로 무엇을하는지보십시오.'self.label'이'Label'의 인스턴스를 가리 키도록 설정합니다. 당신이 만든 것. 두 개 이상의 라벨에 대한 참조를 저장하려면 코드를 적절하게 수정해야합니다. 'self.labels = []'와'self.labels.append (Label (text = '...'))'이면, 나중에 self.label에서 레이블을 수정할 수 있습니다. – inclement

+0

응답 해 주셔서 다시 한 번 감사드립니다. 'AttributeError : 'list'객체에 'bind'속성이 없습니다. 오류가 발생합니다. – fastmhc