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

Kivy中通过Factory调用其他类方法更新Label文本失效怎么解决

问题原因

你调用Factory.StatSummary()时实际是创建了一个全新的StatSummary类实例,这个新实例并没有被添加到界面渲染树中,你修改的是这个未挂载的实例属性,自然不会影响已经显示在界面上的原有StatSummary实例。打印语句正常输出是因为新实例的resetStatSummary方法确实正常执行了,但操作的对象和界面上的实例完全无关。

解决方法

你需要获取已经加载到ScreenManager中的原有StatSummary实例,直接修改这个实例的属性即可。你已经给StatSummary设置了name: "statSummary",可以通过ScreenManager的get_screen方法直接获取这个实例。

仅需修改.kv文件中ResetPopup的Reset按钮的on_release逻辑,把原来的:

Factory.StatSummary().resetStatSummary()

替换为:

app.root.get_screen('statSummary').resetStatSummary()

修改后完整的ResetPopup按钮逻辑如下:

<ResetPopup>:
    title: "Wait..."
    BoxLayout:
        cols: 1
        orientation: "vertical"
        Label:
            text: "Are you sure you want to reset?"

        Button:
            text: "Go back"
            on_release:
                root.dismiss()

        Button:
            text: "Reset"
            on_release:
                root.dismiss()
                app.root.get_screen('statSummary').resetStatSummary()
                app.root.current = "interact"
                app.root.transition.direction = "right"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:36:06