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

如何在Python/Kivy应用中打印循环添加的所有TextInput值?

获取Kivy中动态添加的TextInput输入值

这里提供两种实用的方法来获取所有动态添加的TextInput的输入值:

方法一:遍历布局子组件筛选TextInput

直接在按钮回调里遍历布局的子组件,筛选出TextInput类型的实例并读取其text属性。注意children属性的顺序是反向的(后添加的组件排在最前面),如果需要和创建顺序一致,用reversed()反转即可。

修改后的完整代码:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

class app(App):
    def build(self):
        self.box = BoxLayout(orientation='vertical')
        for n in range(5):
            self.box.add_widget(TextInput())
        
        def doet(instance):
            print('values: ')
            # 按创建顺序输出所有TextInput的值
            for widget in reversed(self.box.children):
                if isinstance(widget, TextInput):
                    print(widget.text)
        
        self.box.add_widget(Button(text='DOET', on_press=doet))
        return self.box

app().run()

方法二:创建时保存TextInput到列表

在循环创建TextInput时,把每个实例存入一个类属性列表,后续直接遍历这个列表就能获取值,无需类型判断,效率更高,顺序也完全和创建时一致。

修改后的完整代码:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

class app(App):
    def build(self):
        self.box = BoxLayout(orientation='vertical')
        self.inputs = []  # 存储所有TextInput实例
        for n in range(5):
            ti = TextInput()
            self.inputs.append(ti)
            self.box.add_widget(ti)
        
        def doet(instance):
            print('values: ')
            # 遍历列表输出所有值
            for ti in self.inputs:
                print(ti.text)
        
        self.box.add_widget(Button(text='DOET', on_press=doet))
        return self.box

app().run()

内容的提问来源于stack exchange,提问作者Tommy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:15:48