定义Python工具箱帮助的参数说明?


14

我正在尝试为我们的ArcMap应用程序创建一些Python工具箱(例如MyTool.pyt)

我可以看到帮助文本是使用class self.description属性定义的。

但是,一旦我运行该程序并单击任何参数字段,帮助/说明文本将变为空。我希望能够为每个参数提供描述字段。这是如何完成的?

经过一番回应之后,我发现通过“项目描述”右键单击上下文菜单,可以填充许多字段。有没有一种“ pythonic”的方式来做到这一点?也就是说,仅将某些属性嵌入.pyt文件类中?

例如,在.pyt工具箱定义中,您具有Toolbox类:

import arcpy

class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "My Toolbox"
        self.alias = ""

        # List of tool classes associated with this toolbox
        self.tools = [MyNiceTool]


class MyNiceTool(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "My Tool Class"
        self.description = """
A description that shows up in the help context side pane when the tool is launched.
        """
        self.canRunInBackground = True

    def rest_of_required_methods....

在self.description字符串中,“工具”对话框帮助窗口将显示此文本。但是,我想做的是在代码中也为每个参数嵌入一个“说明”,以便在启动该工具并用户单击参数字段时显示参数说明。如果我要使用以下答复中引用的“项目描述”方法来执行此操作,我将为每个参数编辑“语法”部分下的“对话框说明”字段。

Answers:


16

我可以看到帮助文本是使用class self.description属性定义的。

这就是你要去的地方。在帮助页面的“在Python工具箱中记录工具”中说:

对于Python工具箱,该工具箱和工具的文档存储在按名称与该工具箱和工具关联的.xml文件中。每个工具的帮助将存储在单独的.xml文件中。

这意味着您无法在.pyt文件本身内设置帮助文本。当您认为帮助文本不是纯ASCII而是可以包含格式,项目符号和图像的富文本时,这很有意义。

幸运的是,Python 支持读写XML,因此您应该能够从单独的脚本中动态编辑帮助文本。


2
感谢您指向“文档”帮助页面的链接。.我进行了搜索,但由于某种原因未能进入该页面。如果ESRI支持restructuredText,那就太好了。然后,我们可以使用Sphinx直接从代码中记录工具箱。
约翰,

“您应该能够从单独的脚本中动态编辑帮助文本。” ->那将是非常可取的..有人为此开发了工具吗?
拉特尼尔

13

您可以按照以下步骤为每个参数定义消息:

  1. 打开ArcCatalog并在目录树中突出显示脚本
  2. 选择描述标签
  3. 点击编辑按钮
  4. 单击每个参数旁边的向下箭头,然后输入消息
  5. 最后,单击“保存”按钮保存编辑

现在,当用户在脚本参数中单击时,他们将看到您的消息。


4
谢谢..您知道这些信息最终保存在哪里吗?是否将其写入似乎在我放置.pyt文件的文件夹中创建的xml文件中?
约翰,

11

如果我理解正确,则想在功能中添加帮助文本。这可以通过在工具箱窗口中右键单击您的工具,然后单击项目描述,然后在顶部进行编辑来完成。它将允许您为每个参数添加描述,单击该参数时,该描述将显示在帮助部分中。

如果您使用的是Arcmap 10.0(至少是较早的SP),则需要从Arcmap中的ArcCatalog窗口(浏览至工具箱)中进行此操作,以使其正常工作。


谢谢,这很有帮助,而且似乎确实是一种解决方案。实际上,它为我提出了一系列全新的问题!我没有意识到所有这些“项目描述”字段,因为我只通过10.1中的Python工具箱(.pyt)文件使用了工具箱。不幸的是,虽然这不是我想要的,但是...现在我要编辑我的问题。
约翰,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.