добавив больше значений в буксировку Textinput Dynami c Arrays и получая сумму в метке на одном экране, - PullRequest
0 голосов
/ 14 февраля 2020

Я все еще новичок в Киви, и у меня есть Проблема ! Пользователь должен ввести разные значения в первый текстовый ввод «Первый текстовый ящик значений» и точка "." между каждым значением , например, 12.32.3, если он нажимает «Ввод» , он получает возможность создать новое поле, «Второе поле ввода текста» и затем он может продолжайте записывать значения во 2-й блок, и точку "." между каждым значением например, двумя значениями 1,2, затем он может нажать кнопку «Результат» , он получит сумму на одном и том же экране в 3 разных метках . Метка: первое значение из первого поля «12» плюс первое значение из второго поля «1» второе значение из первого поля «32» плюс второе значение из второго поля "2" третье значение из первого поля "3" плюс третье значение из второго поля "0" можете ли вы пожалуйста помогите мне, как я могу сделать этот Dynami c Array in the Box? Спасибо

1 Ответ

0 голосов
/ 15 февраля 2020

Я не совсем уверен, что именно вы просите. Вы хотите что-то подобное?

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout




Builder.load_string('''
<BestWindow>:
    inpt_one: inpt_one
    inpt_two: inpt_two
    result_layout: result_layout
    BoxLayout:
        orientation:"vertical"
        TextInput:
            id: inpt_one
        TextInput:
            id: inpt_two
        Button:
            text: "Add them up!"
            on_press: root.calculate()
        BoxLayout:
            id: result_layout
            orientation: "horizontal"

''')

class BestWindow(BoxLayout):
    my_result = StringProperty("")
    inpt_one = ObjectProperty(None)
    result_layout = ObjectProperty(None)
    def __init__(self, **kwargs):
        super(BestWindow, self).__init__(**kwargs)

    def calculate(self):
        self.result_layout.clear_widgets()
        nums_one = self.inpt_one.text.strip().split(".")
        nums_two = self.inpt_two.text.strip().split(".")
        if(len(nums_one) < len(nums_two)):
            for _ in range(len(nums_two)-len(nums_one)):
                nums_one.append(0)
        elif(len(nums_two) < len(nums_one)):
            for _ in range(len(nums_one)-len(nums_two)):
                nums_two.append(0)
        result = [int(x) + int(y) for x,y in zip(nums_one, nums_two)]

        for res in result:
            self.result_layout.add_widget(Label(text=str(res)))
        self.inpt_one.text = ''
        self.inpt_two.text = ''


class TestApp(App):
    def build(self):
        return BestWindow()

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