试图使Kivy按钮弹出一个文本框

时间:2018-10-04 17:24:50

标签: python button kivy textinput

相似/相关的链接并没有太大帮助:

  1. How to get a text input box to display with Kivy?
  2. https://kivy.org/doc/stable/api-kivy.uix.textinput.html
  3. Getting started with Kivy: getting user input using Kivy

我已经待了几个小时了,我发现了与我类似的问题,但实际上没有任何作用。 这是我要尝试的操作:创建一个按钮,按下该按钮时,将拉出文本输入框,然后在短字符串后显示您在按钮上键入的内容。 例如。 按钮开始像:“ LP:” 您输入文本:“ 4000” 现在,按钮显示:“ LP:4000” 我将如何完成?如果那不是完全可能的话,那么我只要按一下按钮就可以得到输入。我什至似乎都无法做到。对于Kivy来说是非常新的东西,而对于Python来说是相当新的东西。 按钮代码(KV文件):

    <FloatLayout>:
        Button:
           name: 'LP'
           id: LP
           text: "LP: 4000"
           size_hint: 0.14, 0.15
           pos_hint: {"left": 1, "top": 0.8105}

类(Py文件):

    class LPInput(Widget):
        pass

输入代码(KV文件):

    <LPInput>:
        size_hint: 0.14, 0.15
        pos_hint: {"left": 1, "top": 0.8105}

        TextInput:
            id: lifepoint
            text: ""

        Label:
            id: currlp #not sure this is doing anything
            text: "LP: "

我写了一些其他的代码,试图通过不同的方法来创建它,但由于沮丧,我将文件保存在保存这些文件的文件中,所以这就是我目前所拥有的。

1 个答案:

答案 0 :(得分:0)

下面的解决方案假定LPInput是根窗口小部件。

<LPInput>:
    size_hint: 0.14, 0.15
    pos_hint: {"left": 1, "top": 0.8105}

    TextInput:
        id: lifepoint
        text: ""

    Label:
        id: currlp #not sure this is doing anything
        text: "LP: "

<FloatLayout>:
    Button:
       name: 'LP'
       id: LP
       text: "LP: "
       size_hint: 0.14, 0.15
       pos_hint: {"left": 1, "top": 0.8105}
       on_release:
           self.text = "LP: " + app.root.ids.lifepoint.text

Kv language » Rule context

  

Kv语言共有三个关键字:

     

应用:始终引用您的应用实例。

     

root :指当前规则中的基本小部件/模板

     

自我:始终引用当前小部件

示例

main.py

from kivy.lang import Builder
from kivy.base import runTouchApp

runTouchApp(Builder.load_string('''
#:kivy 1.11.0
FloatLayout:

    TextInput:
        id: lifepoint
        text: ""
        size_hint: 0.14, 0.15
        pos_hint: {"left": 1, "top": 0.8105}

    Button:
        name: 'LP'
        id: LP
        text: "LP: "
        size_hint: 0.14, 0.15
        pos_hint: {"right": 1, "top": 0.8105}
        on_release:
            self.text = "LP: " + root.ids.lifepoint.text
'''))

输出

Img01 Img02