Создание кнопки, которая вызывает скрипт Python как команду, а не как инструмент скрипта?


12

Я считаю, что в Arc9.3 команды могут быть созданы с использованием сценариев VBA. Чтобы добавить пользовательскую команду, перейдите в «Настройка»> «Панели инструментов»> «Настройка» и нажмите «UIControls». Тем не менее, UIControls не существует в версии 10.

Я создаю два отдельных сценария для проекта книги карт. Один скрипт сохранит настройки макета в таблице, а другой обновит макет с настройками из той же таблицы. Я хочу, чтобы оба этих сценария были командами, назначенными кнопкам на панели инструментов. Я создал их как инструменты сценариев, но всякий раз, когда я нажимаю на них, они запускают сценарий как инструмент геообработки. Он вызывает окно прогресса, и его выполнение занимает в 10 раз больше времени, чем если бы я запускал код в окне командной строки Python. Я не хочу окно прогресса или гораздо более длительное время выполнения.

Как я могу сделать так, чтобы скрипт не считался «инструментом», а был командой, похожей на кнопку «Сохранить»?

Ответы:


6

В макросе Excel VBA следующие вызовы скрипта Python test.py:

Sub test()

rsp = Shell(Environ$("COMSPEC") & " /c C:/test.py", vbNormalFocus)

End Sub

(Оригинальный источник здесь ) Я забыл, как запустить модуль ArcGIS VBA, но, возможно, аналогичная строка подойдет для вызова вашего скрипта на python.


Другая стратегия, которая может сработать, может состоять в том, чтобы скомпилировать ваш скрипт на python в исполняемый файл (.exe) или пакетный файл (.bat) и затем вызвать его.


Я только что увидел другой ответ на gis.se, который более элегантен:

Private Sub python_Click()
    Shell "C:\Python25\python.exe ""C:\rowcount.py"
End Sub

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.