Запрос на ввод данных пользователем во время выполнения скриптового инструмента ArcGIS Python?

9

Я хочу запросить ввод данных пользователем после того, как все параметры были указаны для инструмента-скрипта. Я видел много сообщений на форуме и вопросов об обмене стеками по этому поводу, и все они пришли к выводу, что в этом нет необходимости, но я думаю, что мой случай - исключение. Я хочу дать пользователю возможность подтвердить данные, такие как количество наборов GPS-координат. Это будут вопросы типа «да / нет» («это, очевидно, неверные данные?»), И форма ввода параметров инструмента скрипта, похоже, не будет работать для этого.

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


Видимо WxPython делает работу, но это не входит в питона. Мне нужно иметь возможность распространять эти скрипты без каких-либо дополнительных требований, кроме ArcGIS, так что это не будет работать для меня.


Чтобы уточнить, наиболее важным было бы информировать пользователя, когда мои проверки программного обеспечения не могут проверить данные. Например, у меня есть список идентификаторов, которые я хочу проверить, но формат не соответствует. Я хочу, чтобы я мог предложить пользователю диалоговое окно «да / нет», если я не могу выполнить проверку в программном обеспечении (например, идентификатор не соответствует одному из общих шаблонов). Возможно, что новые форматы ID будут созданы без моего ведома.


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

user14144
источник
11
Я бы посоветовал против этого. Инструменты-скрипты предназначены для запуска без вмешательства пользователя после нажатия «Выполнить». Однако вы можете предоставить более подходящие предупреждения / сообщения об ошибках, используя проверочный код .
blah238
2
Вы упоминаете, что называете подпроцесс хакерским, но что касается получения пользовательского ввода, я думаю, что это может быть вашим единственным вариантом, если вы используете инструменты сценариев Python. Я бы сделал это, если бы мне абсолютно необходимо было взаимодействовать с пользователем с помощью скриптового инструмента на Python - это вызвать подпроцесс C #. Если я вспомню, код python остановится и будет ждать завершения подпроцесса, прежде чем продолжить. Это дает вам возможность включить неограниченное количество пользовательских взаимодействий, встроенных в C #. Вы не можете передавать объекты в C #, поэтому вам придется передавать данные в виде строки.
Bluefoot
Хотя для записи я согласен с blah238
bluefoot
4
Это именно то, для чего нужна валидация в скриптовых инструментах.
user2856
Я думал, что проверка только для проверки по сценарию, и не может получить пользовательский ввод? Могу ли я отобразить подсказки да / нет от валидатора или что-то еще, что будет иметь тот же эффект?
user14144

Ответы:

2

Я не уверен, может ли эта опция работать на вас или нет, но, возможно, вы можете подумать о создании приложения ac #.

  1. Сделайте все взаимодействие с пользователем и проверку данных через это приложение.
  2. После проверки всех данных запустите скрипт python.
Emi
источник