Я новичок в программировании Kivy. Я хочу включить только 4 строки в текстовом вводе в Kivy. Я могу использовать либо только одну строку, либо несколько строк, но мне нужно текстовое поле, в котором разрешено только 4 строки. Короче говоря, мне нужно текстовое поле, в котором я могу ввести что угодно до четырех строк.
Включить только четыре строки ввода текста в Kivy
Ответы (3)
Насколько я знаю, в kivy нет чистого способа сделать это. Вы можете попробовать использовать 4 отдельных TextInput и просто переключать фокус, когда пользователь нажимает Enter. Вот пример:
from kivy.base import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string("""
BoxLayout:
orientation: "vertical"
TextInput:
multiline: False # one line only
on_text_validate: t1.focus = True # when Enter is pressed, switch focus
TextInput:
id: t1
multiline: False
on_text_validate: t2.focus = True
TextInput:
id: t2
multiline: False
on_text_validate: t3.focus = True
TextInput:
id: t3
multiline: False
"""))
person
Edvardas Dlugauskas
schedule
28.05.2017
Вы можете установить счетчик для разрывов строк и/или символов и заблокировать любой новый разрыв строки/символ.
документация по Kivy TextInput
Вы можете использовать значение row
. Этим можно управлять с помощью функции фильтрации TextInput.
Изменить:
Небольшой пример класса:
class TInput(TextInput):
def __init__(self,**kwargs):
super(TInput,self).__init__(**kwargs)
self.__lineBreak__=0
def insert_text(self, substring, from_undo=False):
if "\n" in substring and self.__lineBreak__ <= 4:
self.__lineBreak__ += 1
self.__s__ = substring
elif self.__lineBreak__ > 4 and "\n" in substring:
self.__s__ = ""
return super(TInput, self).insert_text(s, from_undo=from_undo)
Я думаю, что это должно сделать работу
person
user8128255
schedule
08.06.2017
В версии 1.11.0 Kivy вы можете просто добавить multiline=False
TextInput(font_size=20,
multiline=False,
height=40)
person
Ivan Talalaev
schedule
22.05.2020