Kivy开发:如何读取登录界面TextInput控件输入的用户名与密码
Kivy登录页读取输入内容修复方案
你代码存在两个核心问题导致无法读取输入内容:
- 语法错误:全局函数
readUserInfo中MyGrid..name.text多写了一个.,且name是MyGrid的实例属性,不能直接通过类名MyGrid访问 - 逻辑错误:全局回调函数无法直接拿到MyGrid的实例对象,自然无法读取实例下绑定的输入框内容
修复后完整代码
from kivy.app import App from kivy.uix.label import Label from kivy.uix.gridlayout import GridLayout from kivy.uix.textinput import TextInput from kivy.uix.button import Button from kivy.core.window import Window # 导入所有kivy依赖 def callback(instance): print('The button is pressed') class MyGrid(GridLayout): def __init__(self, **kwargs): Window.size = (300, 120) super(MyGrid, self).__init__(**kwargs) self.cols = 2 self.row_force_default = True self.row_default_height = 80 self.add_widget(Label(text="Username: ", size_hint_x=None, width=300)) self.name = TextInput(multiline=False, size_hint_x=None, width=300, font_size = 50) self.add_widget(self.name) self.add_widget(Label(text="Password: ", size_hint_x=None, width=300)) self.lastName = TextInput(multiline=False, password = True, size_hint_x=None, width=300, font_size = 50) self.add_widget(self.lastName) self.add_widget(Button(text='Register', on_press=callback, size_hint_x=None, width=300, background_color =(99,180,207, 0.8))) self.add_widget(Button(text='Login', on_press=self.readUserInfo , size_hint_x=None, width=300)) def readUserInfo(self, instance): print("用户名:", self.name.text) print("密码:", self.lastName.text) class MyApp(App): def build(self): return MyGrid() if __name__ == "__main__": MyApp().run()
修改说明
- 将读取用户信息的逻辑从全局函数改为MyGrid的实例方法,直接通过
self即可访问当前实例下的所有输入框对象 - 修正了
row_force_default=True后多余的逗号语法问题 - 点击登录按钮后,控制台会直接打印你输入的用户名和密码,可根据业务需求替换为校验逻辑即可
内容的提问来源于stack exchange,提问作者WasteOfSpace
相关产品推荐
相关产品推荐

