使用Python在Visio中自动创建渐变颜色形状

问题描述 投票:0回答:1

我正在尝试使用 win32com 通过一些 python 脚本在 MS Visio 中自动生成图形/形状。更具体地说,我在转换/创建具有渐变填充的形状时遇到问题。

我有一个相当简单的 python 脚本,我只创建一个形状,然后启用渐变以保持简单。启用渐变、设置方向/角度都可以正常工作。 当我尝试指定渐变的颜色和位置/停止点时,它根本就失败了。我尝试了多种停止公式,包括换行符,仅使用一行,并深入研究了 Visio 和 Microsoft 文档中的形状表,看看是否有任何点,但没有运气。 我还没有找到任何关于如何通过 Python 设置公式的文档,或者专门操作这些字段/单元格的替代方法。

我有以下代码片段 - FillGradient 部分的灵感来自 ChatGBT,因为我很难找到任何相关文档:

app = win32.Dispatch('Visio.Application')
app.Visible = True
page = self.app.ActivePage
shape_name = "Process"
mastObj = self.stnObj.Masters(shape_name)
shape = page.Drop(mastObj, xPos, yPos)
# The following yields same results:
shape = page.DrawRectangle(1.0, 1.0, 2.0, 2.0)
shape.Text = "My shape name"
shape.Cells('FillForegnd').FormulaU = "RGB(255,0,0)"
gradient_type = 1  # Linear gradient
gradient_angle = 45  # Angle in degrees (0 for horizontal)
Set gradient fill properties
shape.Cells("FillGradientEnabled").FormulaU = "TRUE"
shape.Cells("FillGradientDir").FormulaU = str(gradient_angle)
shape.Cells("FillGradientAngle").FormulaU = str(gradient_angle)
stops_formula = "RGB(255,0,0),0%,0:RGB(0,0,255),100%,1"
shape.Cells("FillGradientStops").FormulaU = stops_formula

我只是收到以下错误

shape.Cells("FillGradientStops").FormulaU = stops_formula
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<COMObject Drop>", line 2, in Cells
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Visio Professional', '\n\nUnexpected end of file.', None, 0, -2032466967), None)

因此,我正在寻找一种构建正确公式的方法,或者一种使用相同信息操作“填充渐变停止”的单元格/行的方法。

python shapes gradient visio
1个回答
0
投票

我没有在我的绘图中使用填充渐变......
我只需添加矩形并查看其渐变属性部分中的内容 我在那里找不到 FillGradientStops 单元格!另外我在 Shapesheet 的 MS 在线文档中找不到这个单元格…

© www.soinside.com 2019 - 2024. All rights reserved.