Добавление текста в группы не работает для svgwrite - PullRequest
0 голосов
/ 09 июля 2020

Я пишу базовый c скрипт для создания базовых c диаграмм с использованием python svgwrite. Мне удалось создать группы с другими элементами, такими как круги, пути и линии. Однако при добавлении нескольких текстовых элементов в группу они неправильно отображаются в группе, когда я открываю фигуру svg с помощью Inkscape. Текст отображается нормально, но он просто не сгруппирован.

Это мой фрагмент кода:

        # Create group for constellation names
        const_names = dwg.add(dwg.g(id='constellation_names', 
                                    stroke='none',
                                    fill=config.constellation_name_font.color.get_hex_rgb(),
                                    fill_opacity=config.constellation_name_font.color.get_float_alpha(),
                                    font_size=config.constellation_name_font.size*pt,
                                    font_family=config.constellation_name_font.font_family))
        
        log.warning("Constellation name groups are not working!")
        
        if config.constellation_name_enable:
            w, h = constellation.get_mean_position()
            # Add every text item into the group
            const_names.add(dwg.text(constellation.name,
                                     insert=(w*pt, h*pt),
                                     )
        )

1 Ответ

0 голосов
/ 16 июля 2020

Оказывается, это ошибка типа 8 (у меня была ошибка в коде). Так выглядел мой код. Все текстовые экземпляры сгруппированы в одну группу.

def _add_constellation_names(dwg, constellations, config):
    const_names = dwg.add(dwg.g(id='constellation_names', 
                                stroke='none',
                                fill=config.constellation_name_font.color.get_hex_rgb(),
                                fill_opacity=config.constellation_name_font.color.get_float_alpha(),
                                font_size=config.constellation_name_font.size*pt,
                                font_family=config.constellation_name_font.font_family))
    
    for constellation in constellations:
        kwargs = {}
        if constellation.custom_color != None:
            kwargs["fill"] = constellation.custom_color.get_hex_rgb()
            kwargs["fill_opacity"] = constellation.custom_color.get_float_alpha()
        
        w, h = constellation.get_mean_position()
        const_names.add(dwg.text(constellation.get_display_name(),
                                 insert=(w*pt, h*pt),
                                 text_anchor="middle",
                                 **kwargs,
                                 )
                        )
...