kivy向根小部件添加变量

时间:2014-11-24 15:05:12

标签: python oop kivy

我想创建一个kivy程序,从文本输入中获取一个数字,在数字中添加一个并在Label中写入。

但程序没有接受我的变量作为根小部件的一部分。

这是程序:

import kivy
from kivy.app import App
from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import *
from kivy.graphics.vertex_instructions import *
from kivy.graphics.context_instructions import *

kivy.lang.Builder.load_string('''
<my_layout>:
    orientation: 'vertical'
    canvas:
        Color
            rgba: 10, 10, 0, 1
    Label:
        id: label0
        text: 'Wie viel Wiegt das Ei in gramm?'
        font_size: 50


    TextInput:
        id: my_textinput
        font_size: 100
        size_hint_y: None
        height: 100
    Button:
        id: my_button
        height: 100
        text: 'button'
        canvas:
            Color:
                rgba: 0, 0, 20, 1
        on_press: root.berechnen(my_textinput.text)
    Label:
        id: label1
        text: root.var
''')

class my_layout(BoxLayout):
    def __init__(self, **kwargs):
        super(my_layout,self).__init__(**kwargs)
        self.var = self.number
    def berechnen(self, txt):
        self.number = txt

class Add(App):
    def build(self):
        return my_layout()

if __name__ == "__main__":
    Add().run()

1 个答案:

答案 0 :(得分:2)

你设置了self.var,但这不是一个kivy属性所以gui不知道它被改变了并且没有设置属性。

你可以改为

from kivy.properties import StringProperty

class my_layout(BoxLayout):
    var = StringProperty('')

以其他方式继续进行。

看起来您的代码也会崩溃,因为您没有设置self.number,但您确实参考了它。也许这是粘贴你的例子时的错误。