Попытка сделать кнопку Kivy всплывающим текстовым полем - PullRequest
0 голосов
/ 04 октября 2018

Похожие / релевантные ссылки, которые не очень помогли:

  1. Как получить поле ввода текста для отображения с Kivy?
  2. https://kivy.org/doc/stable/api-kivy.uix.textinput.html
  3. Начало работы с Kivy: получение пользовательского ввода с использованием Kivy

Я занимался этим несколько часов и нашел вопросы, похожие на моино на самом деле ничего не сработало.Вот что я пытаюсь сделать: создать кнопку, которая при нажатии вытягивает текстовое поле ввода, а затем отображает все, что вы печатаете на кнопке после короткой строки.Кнопка EG запускается как: «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: "

IЯ написал несколько других частей кода, чтобы попытаться создать это другими способами, но, к сожалению, я сохранил файл, в котором они были, так что это все, что у меня есть на данный момент.

1 Ответ

0 голосов
/ 04 октября 2018

В приведенном ниже решении предполагается, что 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 »Контекст правила

Существует три ключевых слова, специфичных для Kvязык:

app : всегда ссылается на экземпляр вашего приложения.

root : ссылается на базовый виджет / шаблон в текущем правиле

self : всегда ссылаться на текущий виджет

Пример

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
'''))

Output

Img01 Img02

...