Объект не имеет атрибута "btn" - PullRequest
1 голос
/ 13 апреля 2019

Я следую инструкциям и пытаюсь реализовать кнопку в файле .kv.Я ожидаю, что смогу запустить файл main.py и ввести имя и информацию электронной почты.Когда я нажимаю кнопку отправки, я ожидаю, что она выведет имя и адрес электронной почты на консоль и очистит поля ввода текста.После нажатия кнопки отправки я получаю AttributeError:

У объекта 'GusApp' нет атрибута `'btn'

Я проверил отступ и проверил метод 'btn' находится в моем основном файле питона.

основной питон

class Grid(Widget):
    name = ObjectProperty(None)
    email = ObjectProperty(None)

    def btn(self):

        print("Name: ", self.name.text, "email: ", self.email.text)
        self.name.text = ""
        self.email.text = ""

class GusApp(App):
    def build(self):
        return Grid()

gus.kv

name: name # global variable id name
email: email # global variable id email

GridLayout:
    cols: 1
    size: root.width - 200, root.height - 200
    pos: 100, 100

    GridLayout:
        cols: 2

        Label:
            text: "Name: "

        TextInput:
            id: name
            multiline:False

        Label:
            text: "Email: "

        TextInput:
            id: email
            multiline:False

    Button:
        text:"Submit"
        on_press: app.btn()

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

удалось заставить кнопку работать, изменив 'on-press: app.btn ()' на 'on-press: root.btn ()'.

Документация kivy и Стив помогли мнепонять контекст правила KV.Я рекомендую просмотреть эту ссылку, если у вас возникли похожие проблемы: https://kivy.org/doc/stable/guide/lang.html?highlight=binding

0 голосов
/ 13 апреля 2019

Сообщение об ошибке предполагает, что Python ищет атрибут btn в классе с именем GusApp, но ваш код, по-видимому, определяет этот атрибут в классе Grid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...