如何用Kivy获取textinput的值

时间:2015-08-19 00:28:57

标签: python python-2.7 kivy

我是Kivy的新手,因为我无法在PySide上练习(一些动态图书馆被破坏或我不知道是什么)我想尝试这个巨大的工具。

我现在迷路了,我试着这样做: Get textinput value in Kivy app

但我不会以同样的方式这样做:

<ProduitScreen>:
    GridLayout:
        rows: 3
        cols: 2
        padding: 10
        spacing: 10
        Label:
            font_size: 20
            text: 'Nom du produit'
        TextInput:
            font_size: 20
            id: nom
        Label:
            font_size: 20
            text: 'Prix'
        TextInput:
            font_size: 20
            id: prix
        Button:
            text: 'Ajouter'
            on_press: self.ajouter()
        Button:
            text: 'Quitter'
            on_press: root.manager.current = 'menu'

因此,带有字段文本的按钮填充了&#39; Ajouter&#39;必须允许我获取两个字段的值并将它们添加到列表中,但是:

AttributeError: 'Button' object has no attribute 'ajouter'

在我的课堂上,它定义如下:

class ProduitScreen(Screen):
    def ajouter():
        print "%s au prix de %d a ete ajoute" % (self.nom.txt , float(self.prix.txt))

有人可以告诉我该怎么做吗?

编辑:黑名单没有保存缩进,因此有完整的代码http://pastebin.com/W1WJ8NcL

1 个答案:

答案 0 :(得分:3)

ajouter方法是ProduitScreen而非Button的成员,因此您应该使用root来引用它:

    Button:
        text: 'Ajouter'
        on_press: root.ajouter()

同时修复了ajouter的定义问题:

class ProduitScreen(Screen):
    def ajouter(self):
        print "%s au prix de %f a ete ajoute" % (self.nom.text , float(self.prix.text))

要在python代码中使用nomprix,请将其添加到kv代码中:

<ProduitScreen>:
    nom: nom
    prix: prix