Почему kivy TextInput снова печатает один и тот же номер? - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу получить сумму моего TextInput, когда я нажимаю кнопку.

class Streak():
    def __init__(self, action, action_num, day, hour, minute):
        self.action = action
        self.action_num = action_num
        self.day = day
        self.hour = hour
        self.minute = minute

class MainApp(App):
    def build(self): # build() returns an instance
        return presentation

    def create(self):
        obj = self.root.get_screen('one')
        self.streak = Streak(obj.ids.action_entry.text, obj.ids.streak_entry.text,
                            obj.ids.day_entry.text, obj.ids.hour_entry.text,
                            obj.ids.minute_entry.text)

        total = ((self.streak.day * 86400) + (self.streak.hour * 3600) +
                (self.streak.minute * 60)) # convert into seconds

        print(total)

вот код .kv:

        GridLayout:
            cols:3
            rows:2
            Label:
                text: "Day(s)"
                size_hint: None, None
                font_size: 18
            Label:
                text: "Hour(s)"
                size_hint: None, None
                font_size: 18
            Label:
                text: "Minute(s)"
                size_hint: None, None
                font_size: 18
            TextInput:
                id: day_entry
                input_filter: "int"
                multiline: False
                size_hint: None, None
                size: 200, 28
            TextInput:
                id: hour_entry
                input_filter: "int"
                multiline: False
                size_hint: None, None
                size: 200, 28
            TextInput:
                id: minute_entry
                input_filter: "int"
                multiline: False
                size_hint: None, None
                size: 200, 28
    AnchorLayout:
        anchor_x: "right"
        anchor_y: "bottom"
        Button:
            text: "Add"
            size: 50, 25
            size_hint: None, None
            font_size: 18
            on_press: app.create()

при вводецифры в TextInput и нажмите кнопку «Добавить», программа немного останавливается, а затем печатает ввод «день» много раз, например:

дни: 1, часы: 0, минуты: 1

консоль: 1111111111111111111111111111111111111111111111111111111111111111111111111111 ...

Как бы это исправить?

1 Ответ

0 голосов
/ 14 апреля 2019

Я думаю, что проблема в том, что вы никогда не конвертируете содержимое textinput в int - даже если разрешено вводить только числовые символы, сам текст по-прежнему является строкой.

Это означает, что ваш вывод"1" * 86400 + ..., то есть большее число тех, которые вы видите.

Чтобы исправить это, вы можете сделать что-то вроде self.day = int(day) в каждом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...