Demander une entrée utilisateur lors de l'exécution de l'outil de script ArcGIS Python?

9

Je souhaite demander une entrée utilisateur une fois que tous les paramètres ont été spécifiés pour l'outil de script. J'ai vu de nombreux messages sur le forum et des questions d'échange de pile à ce sujet, et ils concluent tous que ce n'est pas nécessaire, mais je pense que mon cas est une exception. Je veux donner à l'utilisateur la possibilité de confirmer des données, telles que le nombre d'ensembles de coordonnées GPS. Ce seront des questions oui / non ("ces données sont-elles manifestement incorrectes?"), Et le formulaire de saisie des paramètres de l'outil de script ne semble pas fonctionner correctement.

Je sais que le gestionnaire d'événements de Tkinter cause des problèmes avec ArcGIS, et d'autres cadres ont des problèmes similaires. Une solution de contournement que j'ai trouvée est que votre script appelle un autre script qui s'exécute en tant que processus séparé et affiche l'interface graphique du deuxième processus, mais cela semble un peu trop hackish.


Apparemment , wxPython fait le travail, mais il n'est pas inclus avec python. Je dois pouvoir distribuer ces scripts sans aucune exigence supplémentaire autre qu'ArcGIS, afin que cela ne fonctionne pas pour moi.


Pour clarifier, l'utilisation la plus importante serait d'avertir l'utilisateur lorsque mes vérifications de validation de logiciel ne peuvent pas valider les données. Par exemple, j'ai une liste d'ID que je souhaite valider, mais le format n'est pas cohérent. Je veux pouvoir inviter l'utilisateur avec une boîte de dialogue oui / non si je ne peux pas valider dans le logiciel (par exemple, l'ID ne correspond pas à l'un des modèles courants). Il est possible que de nouveaux formats d'identification soient créés à mon insu.


Autre exemple: j'ai un fichier qui contient, entre autres, un tableau des heures de début et de fin. Je veux valider chaque ligne du tableau individuellement, et entasser toutes ces données, ainsi que les autres vérifications, dans la fenêtre d'avertissement deviendrait laid rapidement.

user14144
la source
11
Je le déconseille. Les outils de script sont censés pouvoir s'exécuter sans interaction avec l'utilisateur une fois que vous appuyez sur "Exécuter". Cependant, vous pourrez peut-être fournir des messages d'avertissement / d'erreur plus pertinents à l'aide du code de validation .
blah238
2
Vous mentionnez l'appel d'un sous-processus comme hackish, mais en ce qui concerne l'obtention de la contribution de l'utilisateur, je pense que cela pourrait être votre seule option si vous vous en tenez aux outils de script python. La façon dont je le ferais, si je devais absolument avoir une interaction utilisateur avec un outil de script python, consiste à appeler un sous-processus C #. Si je me souviens bien, le code python s'arrêtera et attendra que le sous-processus se termine avant de continuer. Cela vous donne la possibilité d'inclure une quantité illimitée d'interaction utilisateur intégrée en C #. Cependant, vous ne pouvez pas passer d'objets à C #, vous devrez donc récupérer vos données sous forme de chaîne.
bluefoot
Bien que pour le dossier , je suis d' accord avec blah238
Bluefoot
4
C'est exactement à cela que sert la validation dans les outils de script.
user2856
Je pensais que la validation est uniquement pour la validation par script, et que je ne peux pas obtenir d'entrée utilisateur? Puis-je afficher des invites oui / non du validateur, ou autre chose qui aurait le même effet?
user14144

Réponses:

2

Je ne suis pas sûr, cette option peut-elle fonctionner pour vous ou non, mais vous pouvez peut-être penser à créer une application ac #.

  1. Faites toutes les interactions utilisateur et la validation des données via cette application.
  2. Après avoir validé toutes les données, exécutez le script python.
Emi
la source