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

如何在Python3中通过StringProperty将JSON变量传递到Kivy?

问题解决:Kivy中StringProperty无法传递JSON值到Kv文件

核心问题分析

你的代码里,check_data_login方法错误地重新创建了StringProperty实例,而非更新类已定义的vod_text属性。Kv文件绑定的是屏幕实例的vod_text属性,直接新建StringProperty不会触发UI更新。

修改方案

1. 修正main.py中的属性赋值

把check_data_login方法里的:

vod_text = StringProperty(taxi)

替换成:

self.vod_text = taxi

这样才会更新屏幕实例的vod_text属性,触发Kv文件中绑定的UI元素同步更新。

2. 可选优化:根据输入Code匹配JSON数据

当前代码固定取JSON数组第一个元素,若要根据用户输入的编码匹配id_error,可修改查找逻辑:

def check_data_login(self):
    test = self.input_code_out.text.strip()

    file_name = 'test.json'
    with open(file_name, 'r', encoding='utf-8') as f:
        data = json.loads(f.read())

    # 遍历匹配输入的id_error
    for item in data:
        if item["id_error"] == test:
            self.vod_text = item["prich_error"]
            break
    else:
        # 无匹配时的提示
        self.vod_text = "未找到对应数据"

修改后的完整main.py代码

from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.properties import StringProperty, ObjectProperty
import json


class Lce_InputScreen(Screen):
    input_code_out = ObjectProperty(None)
    vod_text = StringProperty('')

    def check_data_login(self):
        test = self.input_code_out.text.strip()

        file_name = 'test.json'
        with open(file_name, 'r', encoding='utf-8') as f:
            data = json.loads(f.read())

        # 固定取第一个元素(或使用上面的匹配逻辑)
        taxi = data[0]["prich_error"]
        self.vod_text = taxi

        print("texa", type(taxi), taxi)
        print(type(self.vod_text), self.vod_text)

class ScreenManagement(ScreenManager):
    pass

class CustomMenuApp(MDApp):
    def build(self):
        return Builder.load_file("copymain.kv")

if __name__ == "__main__":
    CustomMenuApp().run()

验证效果

修改后点击Find按钮,vod_text属性会被正确更新,Kv文件中的MDLabel和MDTextField的hint_text会同步显示JSON中的对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:15:35