Faire un bouton qui appelle le script Python comme commande plutôt que comme outil de script?


12

Je crois que dans Arc9.3, les commandes peuvent être créées à l'aide de scripts VBA. Pour ajouter une commande personnalisée, accédez à Personnaliser> Barres d'outils> Personnaliser ... et cliquez sur Contrôles UIC. Cependant, UIControls n'est pas là dans la version 10.

Je crée deux scripts distincts pour un projet de livre de cartes. Un script enregistrera les paramètres de mise en page dans une table et l'autre mettra à jour la mise en page avec les paramètres de la même table. Je veux que ces deux scripts soient des commandes affectées aux boutons d'une barre d'outils. Je les ai créés comme outils de script, mais chaque fois que je clique dessus, ils exécutent le script comme outil de géotraitement. Il affiche une fenêtre de progression et son exécution prend environ 10 fois plus de temps que si j'avais exécuté le code dans la fenêtre de ligne de commande Python. Je ne veux pas la fenêtre de progression ou le temps d'exécution beaucoup plus long.

Comment puis-je faire en sorte que le script ne soit pas considéré comme un "outil" et soit plutôt une commande similaire au bouton Enregistrer?

Réponses:


6

Dans une macro Excel VBA, ce qui suit appelle un script Python appelé test.py:

Sub test()

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

End Sub

(Source originale ici ) J'ai oublié comment exécuter un module ArcGIS VBA, mais peut-être qu'une ligne similaire fonctionnerait pour appeler votre script python.


Une autre stratégie qui pourrait fonctionner pourrait être de compiler votre script python dans un fichier exécutable (.exe) ou batch (.bat) et de l'appeler ensuite.


Je viens de voir une autre réponse sur gis.se qui est plus élégante:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.