You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:20:29