Ошибка атрибута приложения Kivy: объект ‘int’ не имеет атрибута ‘value’

#python #kivy

#python #kivy

Вопрос:

я новичок в Kivy, у меня есть проект, в котором много ползунков для ввода значения. итак, после отображения экрана результатов есть кнопка, которая переходит на главный экран, а затем сбрасывает значение всех ползунков на 0. вот мой main.py код

 class result(Screen):
    g1 = NumericProperty(0)
    g2 = NumericProperty(0)
    g3 = NumericProperty(0)

    def homebtn(self):
        self.g1.value = 0
        self.g2.value = 0
        self.g3.value = 0
        sm.current = 'home'
  

тогда я получил ошибку:

 File "/home/abrory7/PycharmProjects/penyakitPencernaan/main.py", line 765, in home
 self.g1.value = 0
AttributeError: 'int' object has no attribute 'value'
  

Комментарии:

1. Когда вы писали self.g1.value , g1 это переменная экземпляра, но вы указали g1 = NumericProperty(0) ее как переменную класса. Возможно, в этом проблема

2. self.g1 = 0 Внутри класса должно быть достаточно его установки.

3. @Shivam Jha попытался удалить g1 = NumericProperty(0) строку, но она возвращает AttributeError: 'result' object has no attribute 'g1'

4. @TaufiqAbrory вы должны написать g1.value = 0 вместо self.g1.value = 0) в своем homebtn() методе

5. я обновил то, что нашел, до ответов. ссылка на экран, на котором находятся ползунки, get_screen() сработала как шарм!

Ответ №1:

Вы можете присваивать значения непосредственно свойству, поэтому это должно работать и сохранять их как свойство:

 class result(Screen):
    g1 = NumericProperty(0)
    g2 = NumericProperty(0)
    g3 = NumericProperty(0)

    def homebtn(self):
        self.g1 = 0
        self.g2 = 0
        self.g3 = 0
        sm.current = 'home'
  

Комментарии:

1. Спасибо! ошибки не отображались после того, как я попробовал это, но проблема остается в том, что значение ползунка все еще не сброшено на 0

2. Если это помогло проверить его как ответы или показать свой код слайдера, если вы хотите, чтобы мы помогли

Ответ №2:

итак, я просто пробую некоторые возможности, которые я мог бы попробовать, и я думаю, что нашел, как решить мою проблему. я попытался сослаться на имя экрана get_screen('screen_name') следующим образом:

 class result(Screen):
    def homebtn(self):
        self.manager.get_screen('page1').g1.value = 0
        self.manager.get_screen('page2').g2.value = 0
        self.manager.get_screen('page3').g3.value = 0
        sm.current = 'home'
  

после того, как я нажимаю кнопку «Домой», значения ползунков теперь сбрасываются на 0