Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2024 07:42:37

Dva2lin
Зарегистрирован: 2023-07-27
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.

Доброго времени суток.
Не могу “заставить” 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,
но вот что на что менять понятия не имею.
Буду признателен за помощь.

Офлайн

#2 Апрель 20, 2024 21:11:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.

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



Офлайн

#3 Апрель 20, 2024 22:37:58

Dva2lin
Зарегистрирован: 2023-07-27
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.


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

Какую?

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

Латышские и подобные символы (Ā или Ļ, например) вводятся несколько иначе. Когда клавиатура находися в режиме LV, просто нажимая клавиши получаешь обычную латиницу. Для получения спец символа необходимо нажать правый Alt и соответствующую латинскую букву (это в Windows)

Офлайн

#4 Апрель 20, 2024 23:18:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.

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

Dva2lin
Для получения спец символа необходимо нажать правый Alt и соответствующую латинскую букву (это в Windows)
Можешь наугад попробовать в PyQt ввести этот Alt там и так далее. Но оно может не сработать и тебе всё равно придётся искать уже рабочие программы, где подобный ввод сделан, и в них смотреть, в чём принцип заключается. Программы не обязательно будут на языке Python. Можно найти, например, программу на Java или на C++, понять, в чём там принцип, а потом воспроизвести то же самое, но уже на питоне. Можно даже не латышский язык смотреть, а скандинавский или испанский, там то же самое по буквам, что и в латышском - есть пересечения с латинским, а есть свои буквы, которых в латинском нет.



Отредактировано py.user.next (Апрель 20, 2024 23:20:04)

Офлайн

#5 Апрель 21, 2024 07:38:09

Dva2lin
Зарегистрирован: 2023-07-27
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.

Ок. Спасибо. Что делать - понятно. Буду искать…

Офлайн

#6 Апрель 21, 2024 11:04:13

Dva2lin
Зарегистрирован: 2023-07-27
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

DearPyGUI и латышские буквы.

Задачу решил “в лоб”.
Получилось, наверное, не совсем элегантно, но работает.
Клавиатура в режиме 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-у ещё раз спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version