如何在Kivy的Builder外部获取MDTextField控件的用户输入数据
解决方案
- Kivy中所有通过Builder加载的KV布局里带id的控件,都可以在App类方法中通过
self.root.ids.控件id获取控件实例 - 按钮的点击事件在KV里通过
on_release: app.自定义方法名()绑定,其中app指代当前运行的App类实例
修改后的可运行完整代码如下:
from kivymd.app import MDApp from kivy.lang import Builder from kivy.core.window import Window Window.size=(400,600) please_help_me=""" MDScreen: MDLabel: text: 'Please Enter Some Data' halign:'center' pos_hint:{'center_x':0.5,'center_y':0.55} MDTextField: id:user_input hint_text: 'Type Here' pos_hint:{'center_x':0.5,'center_y':0.44} size_hint_x:None width:300 MDRaisedButton: text:'Done' pos_hint: {'center_x':0.5,'center_y':0.35} # 新增点击事件绑定,触发App类的show_data方法 on_release: app.show_data() """ class HelpPleaseApp(MDApp): def build(self): main=Builder.load_string(please_help_me) return main # 自定义打印输入内容的方法 def show_data(self): # 通过ids获取MDTextField实例,读取text属性即为用户输入内容 user_data = self.root.ids.user_input.text print(f'Your Data is: {user_data}') HelpPleaseApp().run()
和你熟悉的Tkinter逻辑对应:self.root.ids.user_input 等同于Tkinter里你定义的user_inputEntry控件实例,Kivy的输入控件没有get()方法,直接读text属性即可拿到输入内容。
内容的提问来源于stack exchange,提问作者ZARIR
相关产品推荐
相关产品推荐

