kivy:如何更新对象属性?

时间:2016-04-16 11:03:42

标签: python oop kivy kivy-language

我有一个python脚本和一个kivy文件来构建界面。

我想通过pythons输入(网络输入)动态更新标签内的Text。

所以我为主要的kivy小部件创建了一个属性:

class UserForm(BoxLayout):
    txt = StringProperty("")

在kivy内部我使用on_txt来调用下面小部件中的一些更改:

<UserForm>:
    orientation: 'vertical'
    name: name_input.text
    barcode: barcode_input.text
    on_txt: print ("Aha"); barcode_label.text = "I CHANGED FOR THE BETTER"
    Label:
        id: barcode_label
        text: "barcode (EAN or SN):"
        font_size: 30

它打印&#34; Aha&#34;并且不会抛出任何错误,但它也不会更改标签的文本。

感谢任何帮助或暗示!

1 个答案:

答案 0 :(得分:2)

在python中执行此操作

class UserForm(Screen):
  on_enter(self):
    self.barcode_label.text='I CHANGED FOR THE BETTER'

每次进入屏幕时,这都会将代码更改为此值 替代 如果你想要别的东西试试这个

class UserForm(Screen):
    def changetext(self):
        self.barcode_label.text='I CHANGED FOR THE BETTER'

并在你的kv文件中执行此操作

<UserForm>:
    orientation: 'vertical'
    name: name_input.text
    barcode: barcode_input.text
    barcode_label:barcode_label
    Label:
        id: barcode_label
        text: "barcode (EAN or SN):"
        font_size: 30
    Button:
        text: 'press me'
        pos_hint:{"center_x":0.5,"center_y":0.3}
        size_hint:(0.1,0.1)
        on_press:root.changetext()

这会给你一个按钮来按改变文字 如果您有任何错误,请告诉我