¿Solicitar la entrada del usuario durante la ejecución de la herramienta de script ArcGIS Python?

9

Quiero solicitar la entrada del usuario después de que se hayan especificado todos los parámetros para la herramienta de script. He visto muchas publicaciones en el foro y preguntas de intercambio de pila sobre esto, y todos concluyen que es innecesario, pero creo que mi caso es una excepción. Quiero darle al usuario la oportunidad de confirmar datos, como cuántos conjuntos de coordenadas GPS hay. Serán preguntas de sí / no ("¿estos datos son obviamente incorrectos?"), Y el formulario de entrada de parámetros de la herramienta de script no parece funcionar bien para esto.

Sé que el controlador de eventos de Tkinter causa problemas con ArcGIS, y otros marcos tienen problemas similares. Una solución alternativa que encontré es hacer que su script llame a otro script que se ejecuta como un proceso separado y muestre la GUI del segundo proceso, pero eso parece un poco hackear.


Al parecer wxPython hace el trabajo, pero no está incluido en Python. Necesito poder distribuir estos scripts sin ningún requisito adicional que no sea ArcGIS, para que eso no funcione para mí.


Para aclarar, el uso más importante sería avisar al usuario cuando mis comprobaciones de validación de software no pueden validar los datos. Por ejemplo, tengo una lista de ID que quiero validar, pero el formato no es consistente. Quiero poder solicitar al usuario un cuadro de diálogo de sí / no si no puedo validar en el software (por ejemplo, la ID no coincide con uno de los patrones comunes). Es posible que se creen nuevos formatos de ID sin mi conocimiento.


Otro ejemplo: tengo un archivo que contiene, entre otras cosas, una tabla de horas de inicio y finalización. Quiero validar cada fila de la tabla individualmente, y agrupar todos esos datos, además de las otras verificaciones, en la ventana de advertencia se volvería feo rápidamente.

usuario14144
fuente
11
Aconsejaría en contra. Las herramientas de script están diseñadas para poder ejecutarse sin interacción del usuario una vez que presione "Ejecutar". Sin embargo, es posible que pueda proporcionar mensajes de advertencia / error más pertinentes utilizando el código de validación .
blah238
2
Usted menciona que llamar a un subproceso como hackeo, pero en lo que respecta a obtener la entrada del usuario, creo que esta podría ser su única opción si se queda con las herramientas de script de Python. La forma en que lo haría, si tuviera que interactuar con el usuario con una herramienta de secuencia de comandos de Python, es llamar a un subproceso de C #. Si recuerdo, el código de Python se detendrá y esperará a que se complete el subproceso antes de continuar. Esto le brinda la oportunidad de incluir una cantidad ilimitada de interacción del usuario integrada en C #. Sin embargo, no puede pasar objetos a C #, por lo que tendría que transferir sus datos en forma de cadena.
bluefoot
Aunque para el registro estoy de acuerdo con blah238
bluefoot
44
Esto es exactamente para lo que sirve la validación en las herramientas de script.
usuario2856
¿Pensé que la validación es solo para validación programada y no puedo obtener la entrada del usuario? ¿Puedo mostrar indicaciones de sí / no del validador, o alguna otra cosa que tenga el mismo efecto?
user14144

Respuestas:

2

No estoy seguro, ¿esta opción puede funcionar para usted o no, pero puede pensar en crear una aplicación ac #?

  1. Haga toda la interacción del usuario y validación de datos a través de esta aplicación.
  2. Después de validar todos los datos, ejecute el script python.
Emi
fuente