Найти - Пользователи
Полная версия: как в цикле динамически создать объекты ? указать уникальное имя
Начало » Python для новичков » как в цикле динамически создать объекты ? указать уникальное имя
1
qman
Всем привет,
есть такой линейный код:
    MyFontObject = ttfonts.TTFont('Times', os.path.join(settings.FONT_DIR, 'timesi.ttf'))
pdfmetrics.registerFont(MyFontObject)
FontV100001 = ttfonts.TTFont('V100001', os.path.join(settings.FONT_DIR, 'V100001_.TTF'))
pdfmetrics.registerFont(FontV100001)
FontSlip_code = ttfonts.TTFont('slip_code', os.path.join(settings.FONT_DIR, 'Slip_code.ttf'))
pdfmetrics.registerFont(FontSlip_code)
хочу сделать его более красивым, например сделать словарь
    font_dict = {'Times': 'timesi.ttf', 'V100001': 'V100001_.TTF', 'slip_code': 'Slip_code.ttf'}
и перебором значений создать объекты шрифтов
    for font_name, filename_font in font_dict.items():
font_name = ttfonts.TTFont(font_name, os.path.join(settings.FONT_DIR, filename_font))
в таком коде reportlab не генерит pdf!!! Интерпретатор об ошибке (исключении) не сообщает . Могу предположить - потому что font_name определена как строка.
Как правильно переписать строку в цикле, чтобы создавали имена объектов, у которых имена соответствуют ключам в словаре?
P.S. надеюсь смог понятно сформулировать вопрос
PooH
вы в куске кода с перебором словаря строчку
    pdfmetrics.registerFont(font_name)
забыли сюда скопировать или забыли написать?
bw
И вряд ли является адекватным использование имя font_name для шрифта, font_name скорее указывает на имя шрифта, чем на сам шрифт. Можно делать и font = … для таких целей.

p.s. В остальном PooH всё правильно сказал. Будьте внимательнее впредь.

..bw
qman
PooH
вы в куске кода с перебором словаря строчку
Код:
pdfmetrics.registerFont(font_name)
забыли сюда скопировать или забыли написать?
Точно, забыл вписать. С ней все работает!
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