Kivy Text Input text_suggestion не отображается - PullRequest
0 голосов
/ 26 февраля 2019

Я использовал код, который нашел здесь: Текст предложения

1) Дело в том, когда существует точное соответствие между значением и существующим словом в списке (word_list), Я не вижу ввод текста.

2) Более того, когда я начинаю вводить что-то похожее на одно существующее слово, а затем вводить букву, которой нет в существующем слове, я не вижу ввод текста.

Пример: 1) Я написал «коричневый» вручную, я не вижу ввода 2) Я написал «brod» вручную, я не вижу ввода.Если я введу 'brod' + любую другую букву, я увижу текстовый ввод.

Мой код:

class FirstNameTextInput(TextInput):

    cur2 = con.cursor()
    sql_first_name = cur2.execute('SELECT firstName from `employee`')
    first_name_employee = [str(t[0]) for t in sql_first_name]

    word_list = ('The quick brown fox jumps over the lazy old dog').split(' ')

    def on_text(self, instance, value):
        self.suggestion_text = ''
        first_name_employee = list(set(
        self.first_name_employee + value[:value.rfind(' ')].split(' ')))

        val = value[value.rfind(' ') + 1:]
        if not val:
            return
        try:
            # grossly inefficient just for demo purposes
            word = [word for word in first_name_employee
                if word.startswith(val)][0][len(val):]
            if not word:
                return
            self.suggestion_text = word
        except IndexError:
            print('Index Error.')

    def keyboard_on_key_down(self, window, keycode, text, modifiers):
        if self.suggestion_text and keycode[1] == 'enter':
            self.insert_text(self.suggestion_text + ' ')
            return True

        return super(FirstNameTextInput, self).keyboard_on_key_down(window, keycode, text, modifiers)

Мой файл кв:

<AddAttendantPopup>:
text: 'Add Attendant'
size_hint: (0.8, 0.8)
auto_dismiss: True
first_name_input_text: first_name
last_name_input_text: last_name
email_address_input_text: email_address
lb_error: er
BoxLayout:
    orientation: 'vertical'
    Label:
        text: 'First Name'
    FirstNameTextInput:
        id: first_name
        multiline: False
        readonly: False
    Label:
        text: 'Last Name'
    TextInput:
        id: last_name
        multiline: False
    Label:
        text: 'Email Address'
    TextInput:
        id: email_address
        multiline: False
    BoxLayout:
        size_hint_y: None
        height: "40dp"
        Button:
            text: 'Cancel'
            on_press: root.dismiss_popup(0.1)
        Button:
            text: 'Add attendant'
            on_press: root.add_attendant_meeting()
    Label:
        id: er
        foreground_color: 1, 250, 100, 1
        color: 1, 0.67, 0, 1
        size_hint_y: None
        height: 0
        text: root.error
...