管理 Python 加载项类型的状态

加载项类型之间的通信和协调

在某些情况下,需要在加载项类型之间进行通信,以便使用一个自定义便可激活或获取另一个加载项类型的状态。例如,单击某一特定加载项按钮时,可能会将工具的加载项状态从禁用更改为启用。

以下 Python 代码演示了管理加载项通信的方式。在按钮的 onClick() 函数中,工具 ID(变量名)用于将该按钮的状态从禁用更改为启用。无需将命名空间前缀指定为 ID 的一部分。

class ButtonClass(object):
    def __init__(self):
        self.enabled = True
        self.checked = False
    def onClick(self):
        # tool1 is the tool ID
        tool1.enabled = True

在创建加载项类型时,使用 Python 加载项向导 指定工具的 ID(变量名),然后将其存储在 config.xml 文件中。将 ID 作为加载项命名空间的前缀。这样做可防止在加载项之间发生名称冲突。但是,在脚本中使用 ID 时无需将它作为命名空间的前缀。请参见以下示例。

在大多数情况下,通过加载项的扩展名来管理加载项类型的状态,在这种情况下可以对状态进行更新和存储以便对各种应用事件作出响应。例如,当地图文档在数据视图中时,您可能只想要启用一种工具或一组工具。

以下 Python 代码演示了在将激活视图更改为布局视图时使用扩展类禁用工具的方式。不包括命名空间前缀。

class AVExtension(object):

    def activeViewChanged(self):
        mxd = arcpy.mapping.MapDocument('current')
        active_view = mxd.activeView
        # tool1 is the tool ID (without the namespace prefix)
        if active_view == 'PAGE_LAYOUT':
            tool1.enabled = False
        else:
            tool1.enabled = True
        arcpy.RefreshActiveView()
        return

启用和选中属性

会定期通知各种加载项类型(包括按钮、工具和组合框)以更新其启用和选中状态。在 Python 中,加载项类型包含启用选中的布尔属性。例如,可以在加载项初始化过程中将其状态设置为启用或禁用以及选中或未选中。

以下 Python 代码演示了如何将加载项类型的状态设置为启用或选中。

class MyButton(object):
  def __init__(self):
    self.checked = False
    self.enabled = True

选中属性仅适用于按钮类型。启用属性适用于按钮、工具和组合框。

9/15/2013