#python #kivy
#python #kivy
Вопрос:
Я следую руководству и пытаюсь реализовать кнопку в файле .kv. Я ожидаю, что смогу запустить main.py файл и введите имя и адрес электронной почты. Когда я нажимаю кнопку отправки, я ожидаю, что она выведет имя и адрес электронной почты на консоль и очистит поля ввода текста. При нажатии кнопки отправки я получаю AttributeError:
объект ‘GusApp’ не имеет атрибута `btn’
Я проверил свой отступ и убедился, что метод 'btn'
находится в моем основном файле python.
основной python
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()
Комментарии:
1. Попробуйте изменить
on_press: app.btn()
наon_press: root.btn()
Ответ №1:
Сообщение об ошибке предполагает, что Python ищет атрибут btn
в названном классе GusApp
, но ваш код, похоже, определяет этот атрибут в классе Grid
.
Ответ №2:
Удалось заставить кнопку работать, изменив ‘on-press: app.btn ()’ на ‘on-press: root.btn ()’.
Документация kivy и Стив помогли мне понять контекст правила KV. Я рекомендую посмотреть на эту ссылку, если у вас возникли подобные проблемы: https://kivy.org/doc/stable/guide/lang.html ?выделить = привязка