2016-12-29 3 views
0

У меня возникли проблемы вывернув виджеты с ярлыком, когда он добавляется Вот соответствующий фрагмент кода:Kivy удалить виджет

logi= True 
    if data == []: 

     logn =Label(text= "Incorrect Username",color=(190,0,0,1), 
        pos_hint={"right":1.035,"top":1.14}) 
     self.add_widget(logn) 

     logu =Label(text= "Incorrect Password",color=(190,0,0,1), 
       pos_hint={"right":1.035,"top":1.04}) 
     self.add_widget(logu) 

     logi= False 

    if logi == True: 

     textinput.text='' 
     textinput2.text='' 

     if 'logn' in locals() and 'logu' in locals() : 
      self.remove_widget(logn) 
      self.remove_widget(logu) 

раз виджеты были добавлены я не могу показаться, чтобы удалить их, если я удалю оператор if 'logn' in locals() and 'logu' in locals() :, я получаю сообщение об ошибке «Локальная переменная, на которую ссылаются перед назначением» каждый раз, когда я тестирую это без вышеупомянутого, если я установил, что я добавил, что виджеты были добавлены

ответ

0

Я предполагаю, что вы вводите этот метод дважды (1-й data == [] 2-й раз данные = [...]). Таким образом, вы должны держать переменные под рукой (положить их на экземпляре - себя)

logi= True 
if data == []: 

    self.logn =Label(text= "Incorrect Username",color=(190,0,0,1), 
       pos_hint={"right":1.035,"top":1.14}) 
    self.add_widget(self.logn) 

    self.logu =Label(text= "Incorrect Password",color=(190,0,0,1), 
      pos_hint={"right":1.035,"top":1.04}) 
    self.add_widget(self.logu) 

    logi= False 

if logi == True: 

    textinput.text='' 
    textinput2.text='' 

    if hasattr(self, 'logn'): #check that we put something here before... 
     self.remove_widget(self.logn) 
     self.remove_widget(self.logu) 

Примечание все места я добавил себя ...

Смежные вопросы