如何从KivyMD的.kv文件文本框中获取文本?
解决Kivy中获取MDTextField文本内容的问题
你当前的代码里Generate方法仅实现了清空输入框的功能,要获取文本内容只需读取对应输入框的text属性即可。以下是调整后的完整代码:
修改后的.py文件
from kivymd.app import MDApp from kivy.uix.screenmanager import ScreenManager from kivy.lang import Builder from kivy.core.window import Window Window.size = 360,640 class MyGrid(ScreenManager): def Generate(self): # 获取两个输入框的文本内容 filename = self.get_screen("Grid").ids.filename.text content = self.get_screen("Grid").ids.content.text # 这里可以替换为你的业务逻辑,比如生成二维码 print("输入的文件名:", filename) print("输入的内容:", content) # 保留清空逻辑(可选) self.get_screen("Grid").ids.filename.text = "" self.get_screen("Grid").ids.content.text = "" class mainApp(MDApp): Builder.load_file("main.kv") def build(self): return MyGrid() if __name__ == "__main__": mainApp().run()
修改后的.kv文件
仅需调整按钮的on_press事件,去掉多余的参数传递:
<MyGrid>: Screen: name: "Grid" MDLabel: text: "QR Code Generator" font_size: 36 pos_hint: {"center_y": .93} halign: "center" BoxLayout: size_hint_y: .1 padding: "10dp" pos_hint: {"center_y": .75} MDTextField: id: filename hint_text: "Enter File Name..." BoxLayout: size_hint_y: .1 padding: "10dp" pos_hint: {"center_y": .6} MDTextField: id: content hint_text: "Enter Url To Generate QR Code..." MDRectangleFlatButton: text: "Generate" text_color: "white" line_color: "blue" md_bg_color: "blue" pos_hint: {"center_x": .3, "center_y": .48} on_press: root.Generate() # 移除多余的root参数 MDRectangleFlatButton: text: "Clear" text_color: "white" line_color: "#FA8072" md_bg_color: "#FA8072" pos_hint: {"center_x": .7, "center_y": .48}
核心说明
- 获取文本逻辑:通过
self.get_screen("Grid").ids.输入框ID.text即可拿到对应输入框的内容,ids是当前屏幕下所有带ID控件的集合字典。 - 事件调用简化:
on_press中直接调用root.Generate()即可,方法内部的self已经指向MyGrid实例,无需额外传参。 - 验证方式:可以通过
print语句输出获取到的文本,确认内容正确后,再替换为生成二维码的具体业务代码。
内容的提问来源于stack exchange,提问作者علیرضا حریری
相关产品推荐
相关产品推荐

