2016-04-09 4 views
1

Я недавно нашел набор emojis, который я хотел бы использовать в тексте. Они находятся в формате .svg, и я понятия не имею, как их вставлять. У меня есть TextInput для ввода сообщения и пользовательского виджета, который использует TextInput для последующего отображения текста. Я с радостью порекомендую любую помощь, ссылки, статьи, что угодно.Как использовать графику .vv в Kivy TextInput?

ответ

0

Edit2:

Как пояснил @RyanP в комментариях, я полагаю, шрифт имеет изображения смайликов и поэтому единственное, что вам нужно сделать, это шрифт (или непосредственно один из шрифтов kivy использует) и добавляет/заменяет изображения emoji в этом шрифте с вашим .svg s для каждого emoji.

Этот table, несомненно, поможет вам, а также fontforge. Here является частью документации об импорте svgs.

В случае, если это невозможно будет сделать, я оставлю оставшийся ответ ниже.


Я не знаю, если TextInput способен сделать такую ​​вещь - вставки .svg или хорошо любое изображение в себя, потому что это делает текст.

Однако я могу увидеть обходное решение как создание для каждого emoji текстового эквивалента или метки - например, [smileemoji]. Затем после отправки текста создайте функцию, которая заменит теги emojis. Однако он не будет работать с Label таким образом, как он написан, потому что он также отображает текст в одиночку.

Как я это вижу:

  • вы можете использовать метку, которая будет размером его текста, а затем поместить смайлик, а затем другую метку с остальным текстом. Но у вас возникнут проблемы с его упаковкой, потому что вы не сможете сломать строку, как во втором примере (по крайней мере, я не знаю, как), чтобы она оставалась единственным виджетами.

    • 1: bla bla bla смайликов remaining text

    • 2: бла бла бла бла бла бла бла remaining
              text

  • как второй вариант я бы порекомендовал вам делая одну метку, то:

    • смайликов должен иметь постоянный размер
    • сделать для каждого тега специальный символ (ы) в тексте, который будет постоянный размер (использование разметки) - я рекомендую вам что-то, что будет сильно напоминать квадратную форму
    • место Image с такой же ширины, как ваш специальный символ (ы) на верхней части Label, так что он будет вести себя, как изображение в тексте, но в действительности это будет еще один виджет

Второй вариант кажется мне логичным, потому что Label будет обрабатывать упаковку, и единственное, что вам нужно найти и установить, - это постоянный размер и местоположение этого символа в вашем тексте на экране (чтобы вы могли позиционировать виджет Image - не позиция в строке).

Если вы хотите остаться с TextInput как выходным менеджером, не проблема, но вы должны будете управлять проклейками вашего специального характера внутри себя TextInput и - может быть, уродливых части - ручка цвета Image виджета, если ваш диспетчер вывода меняет цвет, например, TextInput делает на фокус/дефокусировку, чтобы он не выглядел странным.

Также есть прокрутка, вам тоже нужно будет обрабатывать это, чтобы ваши эможи не плавали вокруг без причины или оставались на вершине вашего Label/TextInput, пока текст меняется.

На всякий случай, что ваш emoji будет прозрачным или что его цвет фона будет соответствовать цвету вашего диспетчера.

Edit:

Если вы хотите только некоторые смайликов, отказаться от идеи изображения и идти по тегам и заменяя юникодом 1, 2.

+0

Соответствующими заполнителями являются юникод-эмози. –

+0

@ RyanP Да, я знаю, что emojis использует заполнители в unicode, но это не поможет ему сделать его в TextInput: -/Вероятно, он увидит только пустое пространство или нет? – KeyWeeUsr

+2

Не заполнители, фактический Unicode emoji. Они будут отображаться в Kivy, если шрифт поддерживает эти символы. Ключ должен был заменить эти символы изображениями во время процесса рендеринга меток. –

Смежные вопросы