在 Kivy 中更改 on_press 事件的按钮文本值

Change button text value for on_press event in Kivy

我的应用程序有一个文本值为“2”的按钮。我想在 on_press 事件

上将文本值更改为 100

我的尝试:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from random import random
from random import choice
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button

r1c2=random()
Builder.load_string("""
<Highest>:
    r1c2: str(2)
    GridLayout:
        cols: 1
        Button:
            text: root.r1c2
            on_press: root.new()
""")

class Highest(Screen):
    def new(self):
        r1c2=str(100)


# Create the screen manager
sm = ScreenManager()
sm.add_widget(Highest(name='Highest'))

class TestApp(App):

    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

错误:目前,按下按钮时没有任何反应。请帮忙

您应该使用可用的 kivy 属性。有关详细信息,请参阅 kivy.properties

添加此导入以访问字符串 属性:

from kivy.properties import StringProperty

你的 Highest class 应该是:

class Highest(Screen):
    r1c2 = StringProperty(str(2))

    def new(self):
        self.r1c2 = str(100)

初始化时 r1c2 值等于“2”。当调用函数 new() 时,r1c2 的值将变为“100”。按钮文本绑定到字符串 属性 r1c2,因此它会自动更改。

您的构建器字符串中不需要 r1c2=str(2)

Builder.load_string("""
<Highest>:
    GridLayout:
        cols: 1
        Button:
            text: root.r1c2
            on_press: root.new()
""")