Skip to content

chubinmax1/dearpygui_bug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Known dearpygui bugs with cirillyc font and encoding

This demo show some bugs with russian fonts in DearPyGUI framework times.ttf with cyrillic alphabet copied from ordinary Windows/fonts folder only for example. All dialogs in example file used russain language

Widget Bug description Importance
File&Directory Selector Do not open folder with cirillyc symbols in name Critical
viewport.title AbraKadabra then title with cyrillyc symbols Low

Обнаруженные ошибки dearpygui при работе с кириллицей

Этот демострационный пример показывает некоторые проблемы с русскими шрифтами и кодировкой в DearPyGUI шрифт times.ttf был скопирован из папки Windows/fonts для примера так как содержит русские шрифты Все диалоги в примере на русском

Имя компонента Описание проблемы Значимость
File&Directory Selector Не открывает папки если в названии кириллица Критическая
viewport.title Название окна нечитаемо при использовании кариллицы Низкая

# пример демонстрирующий проблемы dearpygui при работе с кириллицей

import dearpygui.dearpygui as dpg
import os

# создание в папке приложения тестовых папок с русскими именами
TEST_PATH = "\\TestCyr\\Проверка 2\\Проверка путей 3"
current_folder = os.path.abspath(os.getcwd())
FULL_PATH = f'{current_folder}{TEST_PATH}'
if not os.path.isdir(FULL_PATH):
	os.makedirs(FULL_PATH)

dpg.create_context()
# данные для мэпинга кириллицы
big_let_start = 0x00C0  # Capital "A" in cyrillic alphabet
big_let_end = 0x00DF  # Capital "Я" in cyrillic alphabet
small_let_end = 0x00FF  # small "я" in cyrillic alphabet
remap_big_let = 0x0410  # Starting number for remapped cyrillic alphabet
alph_len = big_let_end - big_let_start + 1  # adds the shift from big letters to small
alph_shift = remap_big_let - big_let_start  # adds the shift from remapped to non-remapped

# подключение стандартного 
with dpg.font_registry():
	with dpg.font("times.ttf", 20) as default_font:
		dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
		dpg.add_font_range_hint(dpg.mvFontRangeHint_Cyrillic)
		# Starting number for remapped cyrillic alphabet
		biglet = remap_big_let
		# Cycle through big letters in cyrillic alphabet
		for i1 in range(big_let_start, big_let_end + 1):
			# Remap the big cyrillic letter
			dpg.add_char_remap(i1, biglet)
			# Remap the small cyrillic letter
			dpg.add_char_remap(i1 + alph_len, biglet + alph_len)
			# choose next letter
			biglet += 1

# колбэки для виджета выбора файлов
def callback(sender, app_data):
	print('OK was clicked.')
	print("Sender: ", sender)
	print("App Data: ", app_data)
	dpg.set_value('RESULT', f'Результат выбора:\n{app_data.get("file_path_name")}\
			\nЗайти внутрь папки не получилось!')

def cancel_callback(sender, app_data):
	print('Cancel was clicked.')
	print("Sender: ", sender)
	print("App Data: ", app_data)
	dpg.set_value('RESULT', f'Зайти внутрь папки не получилось!')


# колбэк для кнопки открытия виджета выбора файлов
def openFD_callback(sender, app_data, user_data):
	dpg.show_item(user_data)

# создание окна
with dpg.window(label="Тест"):
	inp1 = dpg.add_input_text(hint = 'Пробуйте ввод кириллицы в этом поле ввода',  width = 600)
	dpg.add_spacer(height = 10)
	dpg.add_text('Нажмите кнопку и откройте диалог выбора файлов. \
		Попробуйте войти внутрь папки с названием "Проверка 2".\
		Внутри находится еще одна папка с именем "Проверка путей 3".\
		Получилось?', wrap = False, color=[128, 128, 255, 255])
	dpg.add_spacer(height = 10)
	dpg.add_button(label = 'Открыть окно выбора', callback = openFD_callback,\
		user_data = 'file_dialog_id')
	dpg.add_text(wrap = False, color=[255, 0, 0, 255], tag='RESULT')
	dpg.add_spacer(height = 10)
	dpg.add_text('Нажмите кнопку и задайте русское название view_port. получилось?', \
		wrap = False, color=[128, 255, 128, 255])
	dpg.add_spacer(height = 10)
	with dpg.group(horizontal=True):
		dpg.add_input_text(hint='Введите название главноего окна кириллицей', tag = 'TITLE')
		dpg.add_button(label = 'Установить', callback = \
			lambda: dpg.set_viewport_title(dpg.get_value('TITLE')))

	f1 = dpg.add_file_dialog(show = False, label = 'Откройте папку с Русским названием', \
		default_path = f'{current_folder}\\TestCyr', directory_selector = True,\
		callback = callback, tag = "file_dialog_id", cancel_callback = cancel_callback,\
		width = 700, height = 400)

dpg.focus_item(inp1)
dpg.bind_font(default_font)
# dpg.bind_item_font(inp1, default_font)
# dpg.bind_item_font(f1, default_font)

dpg.create_viewport(title = 'Demo cirrilyc trouble in File&Dir selector', width = 800, height = 600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

ScreenShot/ Скриншот

Alt text

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages