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

如何从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,提问作者علیرضا حریری

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:53:26