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

时间:2015-04-28 19:01:13

标签: 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()

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

1 个答案:

答案 0 :(得分:1)

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

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

from kivy.properties import StringProperty

您的Highest课程应为:

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()
""")