Я не знаю, как изменить его без написания пользовательской функции, которая обрабатывает вставки текста так, как он должен работать по умолчанию. Я могу сказать вам, почему это не работает, и это связано с this и особенно с линией right here, которая делает то же, что и вы, но способ раньше. Поэтому ваш код не будет работать, если вы типа что-то.
Ваш код работает, когда вы паста что-то в TextInput
, потому что (я думаю) функция insert_text()
не вызывается при использовании буфера обмена.
Подробнее об этой проблеме/сбоях. Это хорошо, потому что это ограничивает один линия/слово быть как «длинный», как ваш Texture max size
. Это может быть проблемой, если вы хотите изнасиловать единственную строку TextInput с передачей, например, байтов изображения в это (я сомневаюсь, что кто-то хотел бы это сделать, хотя я лично пробовал это: D).
И даже если это multiline=True
, он будет автоматически положить следующее слово (т.е. при вставке <space>
или других слово отключающей символ) на новую строку, а затем весь VRAM/Texture максимального размера вещь перезагружается (из-за возможно, новая текстура), что вполне разумно.
Кроме того, чтобы объяснить это немного больше: Вы не можете предел ваше решение ряда символов, потому что взять, например, андроид-устройства и ПК ... Мой ноутбук имеет Texture max size <16384>
, хотя мой телефон имеет 4096. Это огромная разница для такого решения. Вам нужно получить что-то, что скажет вам, что размер текстуры или vram превышен, т. Е. С помощью OpenGL api. Скорее всего, + ориентированное решение akshayaurora лучше и будет менее болезненным для реализации, чем проверка на превышение памяти, хотя это может потребоваться и для устройств с малый размер макс/vram.