добавив четыре значения в два текстовых ввода и получив результат в метке, kivy - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь создать приложение, которое может вычислить сумму четырех значений в двух Textinput. У меня есть этот код: есть текстовый вход, пользователь может ввести число в этом текстовом входе, затем пользователь может нажать «Enter». ", затем дается второй текстовый ввод, во втором текстовом вводе пользователь может ввести другое значение. Если пользователь нажимает" Пробел ", он получает результат, сумму первого значения и второго значения,

мой код: main.py

from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.textinput import TextInput
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.clock import Clock



Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (400, 200)


class WindowManager(ScreenManager):
    pass




class BestWindow(Screen):

    def __init__(self, **kwargs):
        super(BestWindow, self).__init__(**kwargs)
        Window.bind(on_key_down=self._on_keyboard_down)
        self.counter = 1
        Clock.schedule_once(self.add_stuff)

    def add_stuff(self, *args):
        self.textlist = [TextInput()]
        self.textinput = TextInput(focus=True)
        self.ids.grid.add_widget(Label(text='Input value {}'.format(self.counter)))
        self.counter += 1
        self.ids.grid.add_widget(self.textlist[0])


    def addnewtextinput(self):
        self.ids.grid.add_widget(Label(text='Input value ' + str(self.counter)))
        self.counter += 1
        self.textlist.append(TextInput())
        self.ids.grid.add_widget(self.textlist[-1])

    def getresult(self):

        result = 0
        for i in self.textlist:
            result += int(i.text)
        self.ids.label_id.text = str(result)



    def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
        if self.textinput.focus and keyboard== 13:  # 32 - Cpace key presssed Ascii
            self.addnewtextinput()
        if self.textinput.focus and keyboard== 32:  # 32 - Cpace key presssed Ascii
            self.getresult()




kv = Builder.load_file("main.kv")
class TestApp(App):
    def build(self):
        b1 = WindowManager()
        return b1



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

файл main.kv:

<CustButton@Button>:
    font_size: 40

<WindowManager>:
    BestWindow:


<BestWindow>:

    name: "erst"
    grid: grid.__self__
    GridLayout:
        cols:1
        # you will control that GridLayout from .py so here it's empty
        GridLayout:
            # set the id to be able to control it from .py file
            id: grid
            cols: 2




        GridLayout:
            spacing: 10
            cols:2

            Button:
                id : test3
                focus: False
                text: "Result!"
                on_press: app.root.current = "therd"

            Label:
                id:label_id
                multiline: True
            BoxLayout:
                id: result_layout
                orientation: "horizontal"

теперь мне нужно сделать следующее: 1. курсор должен быть при первом вводе текста. 2. когда я нажимаю «Enter» курсор должен быть в новом текстовом вводе. 3. Введите более одного значения в каждый текстовый ввод и используйте Komma между значениями, например, первый ввод текста: 1,3,2, второй: 3,5,3,5, результат: 4 8 5 5 как я могу сделай это ? Спасибо

...