如何使用 Kivy 更改另一个屏幕中的值?

问题描述

    Button:
        text:"Go Back"
        on_release:
            app.root.current='mainwin'
            root.manager.transition.direction="right"
            app.setResult()



<CalcScreen>
    id: second
    name:'calcwin'
    GridLayout:
        cols:1
        Label:
            text: root.setResult()
            multiline:False
            color: 1,1,1
            font_size: (30)
        Button:
            text:"Go Back"
            on_release:
                app.root.current='mainwin'
                root.manager.transition.direction="right"
                

class CalcScreen(Screen):
    global ChiSquare
    def btn3(self):
        pass
    def setResult(self):
        ans = NumericProperty(ChiSquare)
        self.ans=str(ChiSquare)
        print(ans)
        self.root.ids.label1.text = self.ans

一个和第二个代码来自kivy文件,第三个来自python文件。我正在尝试制作卡方计算器。当我按下第一个计算按钮时,calcscreen 上的标签应该显示答案,但它只显示 None。我不知道怎么解决这个问题,你能帮我吗?

如果我没有提供足够的资源,我会展示更多。

谢谢,

附言 解决了,谢谢。我知道我不太了解 kivy 的很多基础知识,抱歉这个令人困惑的问题。

    def result(self):
        self.manager.screens[1].label1.text = str(self.calc())


class CalcScreen(Screen):
    c = ObjectProperty(None)
    ans = Stringproperty()
    print(ans)
    def btn3(self):
        pass

解决方法

在你的 .kv 文件中试试这个:

<CalcScreen>
id: second
name:'calcwin'
GridLayout:
    cols:1
    Label:
        Id: "label1"
        text: ""
        multiline:False
        color: 1,1,1
        font_size: 30
    Button:
        text:"Go Back"
        on_release:
            app.root.current='mainwin'
            root.manager.transition.direction="right"
        on_press: app.setResult()

然后在你的python文件中:

class CalcScreen(Screen):
    global ChiSquare
    def btn3(self):
        pass
    def setResult(self):
        ans = NumericProperty(ChiSquare)
        self.ans=str(ChiSquare)
        print(ans)
        self.root.ids.label1.text = self.ans

on_press: app.setResult() 将在按下按钮时运行该函数

self.root.ids.label1.text = self.ans 将显示结果