Entwickeln einer GUI in Python für die ArcGIS-Geoverarbeitung mit PyQT / Tkinter / wxPython?

13

Ich möchte eine GUI in Python für die ArcGIS-Geoverarbeitung entwickeln.

Kann ich PyQT für die GUI-Programmierung in ArcGIS verwenden?

Ich habe auch überlegt, Tkinter und wxPython zu verwenden.

BBG_GIS
quelle

Antworten:

21

Ich würde die Notwendigkeit in Frage stellen, Ihre eigene GUI für die Geoverarbeitung zu verwenden.

Die Idee eines Geoverarbeitungswerkzeugs ist, dass es die Standardschnittstellen durchläuft (das GP-Fortschrittsdialogfeld, wenn es für Nachrichten aktiviert ist, und ein Fortschrittsdialogfeld, das GP-Werkzeugdialogfeld zum Festlegen von Parametern und Ausführen des Werkzeugs usw.) und ich möchte das hören Use Case für den Versuch, das alles zu umgehen.

Alles in allem: Es kommt darauf an, was für Sie am besten funktioniert.

  1. Tkinter ist eingebaut, aber irgendwie hässlich und schwierig, etwas Raffiniertes zum Laufen zu bringen, aber wenn Sie eine Benutzeroberfläche darin schreiben, läuft es so ziemlich überall .
  2. Wx und PyQT sind beide nahezu funktional äquivalent, obwohl die wxPython-Beispiele großartig sind und die Entwicklertools von QT ein bisschen besser sind. Schauen Sie sich die APIs von beiden an und finden Sie heraus, welche für Sie besser geeignet ist.

Ich habe nicht erwähnt, dass PyQT in ArcMap und anderen Programmen mit eigenen Ereignisschleifen etwas stabiler zu funktionieren scheint als Wx oder Tk. Wx- und Tk-Programme sind in der Regel die einzigen UI-Threads, die in einem Prozess ausgeführt werden, und verhalten sich schlecht zu den Ereignisschleifen in anderen GUI-Programmen.

Jason Scheirer
quelle
8

Ich bin bei Jason - Sie sollten wirklich die Notwendigkeit einer Geoverarbeitungs-GUI in Betracht ziehen, da das Dialogfeld "ArcGIS-Geoverarbeitungsfortschritt" (mindestens in 9.3.1, keine Informationen zu 10) ein wenig an Ihre Anforderungen angepasst werden kann (Hinzufügen) Nachrichten, Logfiles, Fortschrittsbalken und so weiter).

Nach meiner Erfahrung ist Tkinter leicht zu verstehen, aber kompliziert, wenn es um Out-of-the-Box-Designs geht. Es gibt auch Zeiten, in denen ArcGIS nicht gut funktioniert (Fenster verschwinden usw.). Es gibt eine "vereinfachte" GUI-Bibliothek namens EASYGUI, die auf Tkinter basiert und viel besser und einfacher zu steuern ist. Ich habe ein bisschen damit gespielt und fand es viel freundlicher als Tkinter.

jonatr
quelle
4

Ich habe versucht, was Sie tun möchten, und Jason hat Recht - verwenden Sie die integrierten Tools. Wenn Sie versuchen, eine beliebige Menge von Python-GUI-Widgets innerhalb des Arcmap-Prozesses auszuführen, treten verschiedene Probleme auf - ich habe es versucht. Am besten führen Sie Ihre GUI außerhalb des Prozesses aus und kommunizieren über COM Arcobjects mit Arcmap, wobei IGeoprocessor zum Ausführen von Tools verwendet wird. Wenn in Ihrem Objekt jedoch nur Geoverarbeitungswerkzeuge und -skripts ausgeführt werden, können Sie kaum bessere Ergebnisse erzielen, als eigene Toolbox-Werkzeuge zu erstellen und die Standardwerkzeugschnittstellen zu verwenden.

artwork21
quelle
2

Sie könnten einfach die GUI in .NET oder Mono erstellen und dann das Python-Skript über das Process- Objekt ausführen .

Donny V.
quelle