Модуль pythonaddins включает в себя функции для поддержки надстроек Python.
Функция | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
OpenDialog({title}, {multiple_selection}, {starting_location}, {button_caption}, {filter}, {filter_label}) | Открывает диалоговое окно для выбора одного или нескольких наборов данных ГИС. Эта функция возвращает полный путь к выбранному набору данных. Если было выбрано несколько наборов данных, она возвращает список полных путей. Фильтрация входных наборов данных отсутствует (например, фильтрация только точечных классов пространственных объектов).
| ||||||||||||
SaveDialog({title}, {name_text}, {starting_location}, {filter}, {filter_label}) | Открывает диалоговое окно для сохранения данных. Эта функция возвращает полный путь для сохранения набора данных.
| ||||||||||||
GPToolDialog(toolbox, tool_name) | Открывает диалоговое окно инструментов геообработки.
| ||||||||||||
MessageBox(message, title, {mb_type}) | Отображает окно сообщения. Эта функция возвращает строковое значение, соответствующее нажатой кнопке сообщения.
| ||||||||||||
GetSelectedTOCLayerOrDataFrame() | Возвращает выбранный слой фрейма данных из таблицы содержания. | ||||||||||||
GetSelectedCatalogWindowPath() | Возвращает полный путь выбранного элемента в окне Каталога (Catalog). | ||||||||||||
ProgressDialog() | Возвращает объект ProgressDialog. Объект диалогового окна Обработка автоматически отображается при входе в блок with и исчезает при выходе. См. сниппет примера кода ниже. Это свойства:
|
код {mb_type} | Тип окна сообщения |
---|---|
0 | Только кнопка ОК |
1 | Кнопки ОК/Отмена |
2 | Прервать/Повторить/Пропустить |
3 | Да/Нет/Отмена |
4 | Да/Нет |
5 | Повторить/Отмена |
6 | Отмена/Повторить/Продолжить |
Эта надстройка использует функцию OpenDialog() для выбора набора файлов слоев и добавляет каждый слой к выбранному фрейму данных.
import arcpy
import pythonaddins
class AddLayers(object):
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
layer_files = pythonaddins.OpenDialog('Select Layers', True, r'C:\GISData', 'Add')
mxd = arcpy.mapping.MapDocument('current')
df = pythonaddins.GetSelectedTOCLayerOrDataFrame()
if not isinstance(df, arcpy.mapping.Layer):
for layer_file in layer_files:
layer = arcpy.mapping.Layer(layer_file)
arcpy.mapping.AddLayer(df, layer)
else:
pythonaddins.MessageBox('Select a data frame', 'INFO', 0)
Эта надстройка открывает инструмент геообработки.
import arcpy
import pythonaddins
class OpenGPTool(object):
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
pythonaddins.GPToolDialog(r'C:\MyTools\WaterStudy.tbx', 'GroundWaterYield')
Пример диалога Обработка: проверьте его в окне Python в ArcGIS for Desktop.
import pythonaddins
with pythonaddins.ProgressDialog as dialog:
dialog.title = "Progress Dialog"
dialog.description = "Copying a large feature class."
dialog.animation = "File"
for i in xrange(100):
dialog.progress = i
time.sleep(0.125)
if dialog.cancelled:
raise Exception("Ooops")
Разрешает открытие только текстовых файлов.
import os
class MyValidator(object):
def __str__(self):
return "Text files(*.txt)"
def __call__(self, filename):
if os.path.isfile(filename) and filename.lower().endswith(".txt"):
return True
return False
filename = pythonaddins.OpenDialog(r"c:\files", filter=MyValidator())