Kivy开发疑问:为何无法从TextInput组件获取文本内容?
解决Kivy中无法获取TextInput文本的问题
你的问题出在获取TextInput的方式不对:tel这个id属于Signin组件,但你代码里直接从screen_manager(也就是self.root)的ids里找它,肯定找不到——每个Widget的ids都是独立的,只有Signin的实例才能访问自己内部的tel。
下面给你两种直接能用的解决办法:
方法一:调用函数时传入Signin实例
修改KV代码里按钮的on_release事件,把当前的Signin实例传进去:
Button: text: "Next ->" height : 100 on_release : app.send_code_request(root) # root就是当前Signin实例
然后修改Python里的send_code_request方法:
def send_code_request(self, signin): phone = signin.ids.tel.text print(phone)
方法二:通过ScreenManager获取Signin页面
如果你的Signin是Screen类,并且已经添加到screen_manager里(比如设置了name或者id),可以直接从screen_manager拿到这个页面:
假设你初始化screen_manager的时候是这样的:
screen_manager = ScreenManager() # 给Signin设置name或者id screen_manager.add_widget(Signin(name="signin_page"))
那修改send_code_request方法:
def send_code_request(self): # 通过name获取Signin页面 signin_page = self.root.get_screen("signin_page") phone = signin_page.ids.tel.text print(phone)
另外提醒下:如果你的Signin不是Screen类,只是普通的Widget,那方法一更适合你。
内容的提问来源于stack exchange,提问作者user18932371
相关产品推荐
相关产品推荐

