Найти - Пользователи
Полная версия: DearPyGUI и латышские буквы.
Начало » GUI » DearPyGUI и латышские буквы.
1
Dva2lin
Доброго времени суток.
Не могу “заставить” DearPyGUI принимать в add_input_text латышские символы.
with dpg.font_registry():

with dpg.font(f'C:/Windows/Fonts/Arial.ttf', 15, default_font=True, id="Default font"):
dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
dpg.add_font_range(0x100, 0x17E)
dpg.add_font_chars([0x0100,0x0101,
0x010C,0x010D,
0x0112,0x0113,
0x0122,0x0123,
0x012A,0x012B,
0x0136,0x0137,
0x013B,0x013C,
0x0145,0x0146,
0x0160,0x0161,
0x016A,0x016B,
0x017D,0x017E,
])
dpg.add_char_remap(...................)

dpg.bind_font("default_font")
Диапазон uni-кодов указал; сами символы указал. Далее следует использовать add_char_remap,
но вот что на что менять понятия не имею.
Буду признателен за помощь.

py.user.next
Dva2lin
но вот что на что менять понятия не имею
Надо это выяснить сначала без питона вообще. Возьми какую-нибудь другую программу и посмотри в ней, как там этот язык сделан.
Dva2lin

py.user.next
Надо это выяснить сначала без питона вообще. Возьми какую-нибудь другую программу и посмотри в ней, как там этот язык сделан.

Какую?

Нашёл как подключают кириллицу. Код выполняется, происходит замена диапазона 0х100… на 0х0410 и так далее. При необходимости ввода русских букв клавиатура переключается в режим RU и всё красиво работает.

Латышские и подобные символы (Ā или Ļ, например) вводятся несколько иначе. Когда клавиатура находися в режиме LV, просто нажимая клавиши получаешь обычную латиницу. Для получения спец символа необходимо нажать правый Alt и соответствующую латинскую букву (это в Windows)
py.user.next
Dva2lin
Нашёл как подключают кириллицу. Код выполняется, происходит замена диапазона 0х100… на 0х0410 и так далее.
Dva2lin
Латышские и подобные символы (Ā или Ļ, например) вводятся несколько иначе.
Dva2lin
Когда клавиатура находися в режиме LV, просто нажимая клавиши получаешь обычную латиницу.
Да, надо посмотреть в других программах. Если она не работает так, как кириллица, то она работает как-то по-другому. Так что поищи программы для других языков и там увидишь, как в них вводят символы.

Dva2lin
Для получения спец символа необходимо нажать правый Alt и соответствующую латинскую букву (это в Windows)
Можешь наугад попробовать в PyQt ввести этот Alt там и так далее. Но оно может не сработать и тебе всё равно придётся искать уже рабочие программы, где подобный ввод сделан, и в них смотреть, в чём принцип заключается. Программы не обязательно будут на языке Python. Можно найти, например, программу на Java или на C++, понять, в чём там принцип, а потом воспроизвести то же самое, но уже на питоне. Можно даже не латышский язык смотреть, а скандинавский или испанский, там то же самое по буквам, что и в латышском - есть пересечения с латинским, а есть свои буквы, которых в латинском нет.
Dva2lin
Ок. Спасибо. Что делать - понятно. Буду искать…
Dva2lin
Задачу решил “в лоб”.
Получилось, наверное, не совсем элегантно, но работает.
Клавиатура в режиме LV. При нажатом правом Alt-е нажимал нужную мне клавишу. Получал изображение некоего символа, искал его в таблице unicodе-ов и заменял на нужный мне.
получилось вот такое:
        dpg.add_font_chars([0x100,0x101,    # Ā ā
0x10C,0x10D, # Č č
0x112,0x113, # Ē ē
0x122,0x123, # Ģ ģ
0x12A,0x12B, # Ī ī
0x136,0x137, # Ķ ķ
0x13B,0x13C, # Ļ ļ
0x145,0x146, # Ņ ņ
0x160,0x161, # Š š
0x16A,0x16B, # Ū ū
0x17D,0x17E, # Ž ž
])
dpg.add_char_remap(0x00C2, 0x0100) # Ā
dpg.add_char_remap(0x00E2, 0x0101) # ā
dpg.add_char_remap(0x00C8, 0x010C) # Č
dpg.add_char_remap(0x00E8, 0x010D) # č
dpg.add_char_remap(0x00C7, 0x0112) # Ē
dpg.add_char_remap(0x00E7, 0x0101) # ē
dpg.add_char_remap(0x00CC, 0x0122) # Ģ
dpg.add_char_remap(0x00EC, 0x0123) # ģ
dpg.add_char_remap(0x00CE, 0x012A) # Ī
dpg.add_char_remap(0x00EE, 0x012B) # ī
dpg.add_char_remap(0x00CD, 0x0136) # Ķ
dpg.add_char_remap(0x00ED, 0x0137) # ķ
dpg.add_char_remap(0x00CF, 0x013B) # Ļ
dpg.add_char_remap(0x00EF, 0x013C) # ļ
dpg.add_char_remap(0x00D2, 0x0145) # Ņ
dpg.add_char_remap(0x00F2, 0x0146) # ņ
dpg.add_char_remap(0x00D0, 0x0160) # Š
dpg.add_char_remap(0x00F0, 0x0161) # š
dpg.add_char_remap(0x00DB, 0x016A) # Ū
dpg.add_char_remap(0x00FB, 0x016B) # ū
dpg.add_char_remap(0x00DE, 0x017D) # Ž
dpg.add_char_remap(0x00FE, 0x017E) # ž

Позже код покрасивше пропишу. Сейчас главное, что получил нужный мне результат.
Рy.user.next-у ещё раз спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB