ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

管理 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

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

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明