Développer une interface graphique dans Python pour le géotraitement ArcGIS à l'aide de PyQT / Tkinter / wxPython?

13

Je souhaite développer une interface graphique en Python pour le géotraitement ArcGIS.

Puis-je utiliser PyQT pour la programmation GUI dans ArcGIS?

J'ai également envisagé d'utiliser Tkinter et wxPython.

BBG_GIS
la source

Réponses:

21

Je remettrais en question la nécessité d'utiliser votre propre interface graphique pour le géotraitement.

L'idée d'un outil de géotraitement est qu'il passe par les interfaces standard (la boîte de dialogue de progression du GP si elle est activée pour les messages et une boîte de dialogue de progression, la boîte de dialogue de l'outil GP pour définir les paramètres et exécuter l'outil, etc.) et j'aimerais entendre la cas d'utilisation pour essayer de contourner tout cela.

Dans l'ensemble: tout dépend de ce qui vous convient le mieux.

  1. Tkinter est intégré mais un peu moche et difficile à obtenir quelque chose de sophistiqué et opérationnel, mais si vous écrivez une interface utilisateur, il fonctionnera à peu près n'importe où .
  2. Wx et PyQT sont tous deux proches de équivalents fonctionnel, bien que les exemples wxPython soient très à apprendre et que les outils de développement de QT soient un peu plus agréables. Examinez les API des deux et déterminez laquelle vous semble la plus agréable à utiliser.

J'ai omis de mentionner que PyQT semble fonctionner de manière légèrement plus stable dans ArcMap et d'autres programmes avec leurs propres boucles d'événements que Wx ou Tk. Les programmes Wx et Tk ont ​​tendance à s’attendre à être les seuls threads d’interface utilisateur exécutés dans un processus et à se comporter mal avec les boucles d’événement dans d’autres programmes GUI.

Jason Scheirer
la source
8

Je suis avec Jason - Vous devriez vraiment considérer la nécessité d'une interface graphique de géotraitement, car la boîte de dialogue de progression du géotraitement ArcGIS (au moins dans 9.3.1, je n'en sais pas environ 10) peut être personnalisée un peu pour s'adapter à vos besoins (ajout messages, fichiers journaux, barres de progression et autres).

D'après mon expérience, Tkinter est facile à comprendre mais compliqué lorsque l'on veut des conceptions très prêtes à l'emploi. De plus, il arrive parfois qu'il n'interagisse pas très bien avec ArcGIS (les fenêtres disparaissent, etc.). Il existe une bibliothèque GUI "simplifiée" appelée EASYGUI qui est basée sur Tkinter, et est beaucoup plus agréable et plus facile à contrôler. J'ai joué un peu avec et je l'ai trouvé beaucoup plus convivial que Tkinter.

jonatr
la source
4

J'ai essayé ce que vous voulez faire, et Jason a raison - utilisez les outils intégrés. Si vous essayez d'exécuter à peu près n'importe quel ensemble de widgets python gui à l'intérieur du processus Arcmap, vous rencontrerez des problèmes de toutes sortes - je l'ai essayé. Il est préférable d'exécuter votre GUI en dehors du processus et de parler à Arcmap via COM Arcobjects, en utilisant IGeoprocessor pour exécuter des outils. Mais si votre objet exécute simplement des outils et des scripts de géotraitement, vous ne pouvez vraiment pas faire mieux que de créer vos propres outils de boîte à outils et d'utiliser les interfaces d'outils standard.

oeuvre21
la source
2

Vous pouvez simplement créer l'interface graphique en .NET ou Mono, puis exécuter le script Python via l' objet Process .

Donny V.
la source