我正在学习教程,并尝试在.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()
答案 0 :(得分:0)
该错误消息表明Python正在名为btn
的类中寻找属性GusApp
,但是您的代码似乎在类Grid
中定义了该属性。
答案 1 :(得分:0)
通过将“ on-press:app.btn()”更改为“ on-press:root.btn()”,可以使按钮正常工作。
kivy文档和Steve帮助我了解了KV规则上下文。如果您遇到类似的问题,建议您查看此链接:https://kivy.org/doc/stable/guide/lang.html?highlight=binding