У меня есть экран, где я хочу задать вопрос, так на языке кв, у меня естьВ kivy, Как я могу контролировать высоту VKeyboard используемой TextInput
Screen:
name: 'keyb'
BoxLayout:
orientation: 'vertical'
Label:
id: rnl
size_hint_y: .1
text: ''
TextInput:
id: tinput
hint_text: '.mid'
size_hint: (.8, .1)
pos_hint: {'x': .1}
multiline: False
on_focus: root.focusCallback(args[1])
Widget:
size_hint_y: .7
Когда я хочу спросить вопрос, я выбираю экран и установить фокус на TextInput
self.tinput.text = ""
self.screens.current = 'keyb'
Clock.schedule_once(self.focusKbd, .1)
который затем каскадом через этот код:
def focusKbd(self, x):
self.tinput.focus = True
def focusCallback(self, f):
if not f:
# Deal with input now
self.screens.current = 'seq'
Где-то в этом коде, я хотел бы
- Выберите который VKeyboard макет по TextInput будет выскакивать (и это будет отличаться в других частях моего кода)
- Отрегулировать высоту VKeyboard.
Я не понимаю, откуда находится VKeyboard в Text Input; есть ли способ получить ссылку на него из TextInput?
Это сообщение https://stackoverflow.com/questions/36414654/how-can-i-change-the-size-of-kivys-vkeyboard Подсказка есть, но этого недостаточно, чтобы заставить меня двигаться!
********************* Редактировать: *********************** ***
Пытаюсь понять ответ от Tshirtman, я ставлю это в верхней части моего главного виджета:
Window.set_vkeyboard_class(get_vkeyboard())
, а затем добавил
def get_vkeyboard():
print '>>>>>>>>>>>>>>>>>>>>>>>>>>in get_vkeyboard'
return VKeyboard
Я обнаружил, что get_vkeyboard() был вызванный немедленно, задолго до того, как мне понадобилась клавиатура. Похоже, что я не смогу что-либо контролировать по внешнему виду VKeyboard в get_vkeyboard(). Пожалуйста, поправьте меня, если я запутался (что я, безусловно, есть!).
Есть ли другой способ изменить внешний вид VKeyboard динамически?
P.S. Кажется, есть намек на Фокусное поведение:
input_type - это OptionProperty и по умолчанию используется текст. Может быть одним из 'text', 'number', 'url', 'mail', 'datetime', 'tel' или 'address'.
Я добавил «input_type: 'number» в TextInput в .kv, но это не повлияло.
Тип ввода более подходит для таких платформ, как android, которые предоставляют встроенную клавиатуру (не kivy vkeyboard) с несколькими макетами в зависимости от использования. – Tshirtman