python的objectproperty_python – 用于更新标签文本的Kivy ObjectProperty

我正在创建一个kivy用户界面来显示由我编写为标准python对象的数据模型生成的值.本质上,我希望用户能够按下一个按钮,这将改变底层数据模型,并且将自动更新和显示此更改的结果.我的理解是,这可以使用kivy属性(在本例中为ObjectProperty)来实现.

这是一些示例代码:

import kivy

kivy.require('1.7.0')

from kivy.app import App

from kivy.uix.gridlayout import GridLayout

from kivy.properties import ObjectProperty

from kivy.lang import Builder

Builder.load_string("""

:

cols: 2

Label:

text: "Attribute a:"

Label:

text: root.data_model.a

Label:

text: "Attribute b:"

Label:

text: root.data_model.b

Label:

text: "Attribute c:"

Label:

text: root.data_model.c

Button:

text: "Make data_model.a longer"

on_press: root.button_press()

Button:

text: "Make data_model.b shorter"

on_press: root.button_press2()

""")

class DataModel(object):

def __init__(self):

self.a = 'This is a'

self.b ='This is b'

@property

def c(self):

return self.a + ' and ' + self.b

class RootWidget(GridLayout):

data_model = ObjectProperty(DataModel())

def button_press(self, *args):

self.data_model.a = 'This is a and it is really long now'

print self.data_model.c

def button_press2(self, *args):

self.data_model.b = 'B'

print self.data_model.c

class TestApp(App):

def build(self):

return RootWidget()

app = TestApp()

app.run()

期望的结果是当用户按下任一按钮时,标签将自动更新以显示新属性.从print语句可以看出,data_model正在正确更新.但是,没有标签正在更新.有人可以澄清如何做到这一点?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值