Python Kivy文本输入小部件:对';绑定&x27;属性

Python Kivy文本输入小部件:对';绑定&x27;属性,python,oop,kivy,Python,Oop,Kivy,我是基维的新手。我正在编写这段代码,我对bind函数的作用感到困惑 基本上,下面的代码生成一个文本输入并打印出用户的输入 从kivy.app导入应用 从kivy.uix.widget导入widget 从kivy.uix.textinput导入textinput 类登录屏幕(小部件): 定义初始(自我,**kwargs): 超级(LoginScreen,self)。\uuuuu初始化(**kwargs) self.username=TextInput(大小=(300,30),位置=(300,30)

我是基维的新手。我正在编写这段代码,我对bind函数的作用感到困惑

基本上,下面的代码生成一个文本输入并打印出用户的输入

从kivy.app导入应用
从kivy.uix.widget导入widget
从kivy.uix.textinput导入textinput
类登录屏幕(小部件):
定义初始(自我,**kwargs):
超级(LoginScreen,self)。\uuuuu初始化(**kwargs)
self.username=TextInput(大小=(300,30),位置=(300,30),多行=False)
#self.username.bind(on_text_validate=self.on_enter)###第一行
self.username.bind(text=self.on_text)###第二行
self.add_小部件(self.username)
输入时定义(实例、值、秒值):
打印(第二值)
文本上的定义(实例、值、第二个值):
打印(第二值)
ABCApp类(应用程序):
def生成(自):
返回LoginScreen()
如果名称=“\uuuuu main\uuuuuuuu”:
ABCApp().run()
这就是我困惑的地方。为什么只有打印出
secondvalue
才能得到用户的实际输入?
bind
函数在这里做什么?我看了文档,但什么也没找到

另外,如果我切换注释,第一行被注释掉,第二行被注释进去,那么

self.username.bind(on_text_validate=self.on_enter)###第一行
#self.username.bind(text=self.on_text)###第二行
在输入文本并按下回车按钮时,我现在正在引用回车上的函数
。但是,我得到了错误消息:

TypeError:on\u enter()缺少1个必需的位置参数:“secondvalue”

如果我在_enter
上更改函数
,以接受2个参数

def on_enter(instance, secondvalue):
    print(secondvalue)
现在将打印
,但不会恢复文本

我对Kivy在他们的后台所做的事情感到困惑,我在他们的文档中找不到任何答案。为什么enter上的
接受2个参数,而text上的
接受3个参数?

将事件与函数连接起来

在您的情况下,第一个事件是
文本输入
小部件的
文本验证上的
(在文本字段上按Enter键时发出的事件),第二个事件是
文本
(当字段的文本更改时)

这些事件使用不同的参数触发其专用函数。
它们都将生成它们的小部件(
TextInput
实例)作为第一个参数发送。
文本
也会发送更改后的文本

要获取
on\u text\u validate
事件的文本,可以获取
TextInput
text
属性,如下所示:
打印(instance.text)