如何为Kivy TextInput编写“ghost”(或不可通过)文本?

时间:2017-01-01 00:43:46

标签: python-2.7 kivy kivy-language

在一个kivy应用程序中,我有一些文本输入小部件,我想将其标记为鬼文本。通过鬼文本,我的意思是它没有传递给稍后要调用的数字的值。

例如,比方说,我在一个kivy应用程序中有两个文本输入条目。

TextInput:
    text: '1st number'
    id: first_id
    input_filter: 'float'
    multiline: False

TextInput:
    text: '2nd number'
    id: second_id
    input_filter: 'float'
    multiline: False

当应用程序运行时,第一个文本输入具有默认文本“第一个数字”,第二个文本输入具有默认文本“第二个数字”。我将它们链接到一个函数,该函数通过方法将两个浮点数相加。问题是如果用户没有输入任何内容并按下“运行”按钮,它将破坏应用程序。有没有办法让文本不能通过函数?

而且,我希望它在后台,以便用户不必点击文本输入,然后在输入数字之前删除“第一个数字”,任何方式都可以这样做?

1 个答案:

答案 0 :(得分:1)

我想我已经创建了一个小例子来创建你想要的行为。我创建了一个新的小部件,其中包含 TextInput 标签,如果值为空,则仅显示标签...

a = Builder.load_string("""

<FloatInput@FloatLayout>:
    empty_text: "Input a number"
    value: float(txt.text or '0.0')
    TextInput:
        id: txt
        input_filter: 'float'

    Label:
        center: txt.center
        size: self.parent.size or (300,300)
        text: "" if self.parent.value else self.parent.empty_text
        font_size: txt.font_size
        color: 0,0,0,1

BoxLayout:
    FloatInput:
        id: fi
    Label:
        text: "%s" % fi.value

""")




class SimpleApp(App):
    def build(self):
        return a

SimpleApp().run()

您可以将此类用作输入窗口小部件...