python - 将文本添加到组中不适用于 svgwrite
问题描述
我正在编写一些基本脚本来使用 python 的 svgwrite 创建基本图表。我已经成功地创建了包含其他项目的组,例如圆圈、路径和线条。但是,当我使用 Inkscape 打开 svg 图形时,将多个文本元素添加到一个组中时,这些元素没有正确显示在一个组中。文本显示得很好,但只是没有分组。
这是我的一段代码:
# 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),
)
)
解决方案
原来这是一个 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,
)
)
推荐阅读
- python - 与熊猫数据框中的日期绘图一致
- performance - 如何衡量 GTM 调用的每个片段/标签对我的主页加载时间的影响?
- asp.net-web-api - 如何验证 GCP Pub/sub 推送订阅令牌?
- xcode - 如何将仅兼容 iOS 的 Application.app 转换为兼容 macOS?
- kubernetes - Traefik 截断文件
- sql-server - 如何在具有不同别名的同一个表上的多个左连接中选择相同的表字段
- android - 我可以将在我的应用程序中使用 AndroidX 库的库与 Android 支持库一起使用吗?
- google-cloud-sdk - “from”不被识别为内部命令
- ios - 来自 rawValues 的 Swift 初始化数组
- expression - 如果行包含特定值,则序列号将在 RDLC 报告中为“-”或零和红色,并且 Group CountRows 总计跳过该行