Czy rozwijasz GUI w Pythonie do geoprzetwarzania ArcGIS przy użyciu PyQT / Tkinter / wxPython?

13

Chcę opracować GUI w Pythonie do geoprzetwarzania ArcGIS.

Czy mogę używać PyQT do programowania GUI w ArcGIS?

Rozważałem także użycie Tkintera i wxPython.

BBG_GIS
źródło

Odpowiedzi:

21

Chciałbym zakwestionować potrzebę użycia własnego GUI do Geoprocessing.

Idea narzędzia geoprzetwarzania polega na tym, że przechodzi on przez standardowe interfejsy (okno postępu GP, jeśli jest włączone dla komunikatów i okno dialogowe postępu, okno dialogowe GP narzędzia do ustawiania parametrów i uruchamiania narzędzia itp.) I chciałbym usłyszeć przypadek użycia do próby obejścia tego wszystkiego.

Podsumowując: wszystko zależy od tego, co jest dla Ciebie najlepsze.

  1. Tkinter jest wbudowany, ale trochę brzydki i trudny do uruchomienia i wyszukania, ale jeśli napiszesz w nim interfejs użytkownika, będzie działał prawie wszędzie .
  2. Wx i PyQT są zbliżone do funkcjonalnie równoważnych, chociaż przykłady wxPython są świetne do nauki, a narzędzia programistyczne QT są nieco ładniejsze. Spójrz na interfejsy API obu i ustal, który z nich wygląda ładniej.

Nie wspomniałem, że PyQT wydaje się działać nieco bardziej stabilnie w ArcMap i innych programach z własnymi pętlami zdarzeń niż Wx lub Tk. Programy Wx i Tk zwykle oczekują, że będą jedynymi wątkami interfejsu użytkownika działającymi w procesie i będą źle działać z pętlami zdarzeń w innych programach GUI.

Jason Scheirer
źródło
8

Jestem z Jasonem - naprawdę powinieneś wziąć pod uwagę konieczność korzystania z GUI do geoprzetwarzania, ponieważ okno postępu geoprzetwarzania ArcGIS (przynajmniej w 9.3.1, nie wiem o 10) można nieco dostosować, aby dostosować do twoich potrzeb (dodając wiadomości, pliki dziennika, paski postępu i tym podobne).

Z mojego doświadczenia wynika, że ​​Tkinter jest łatwy do zrozumienia, ale skomplikowany, gdy chce mieć bardzo gotowe projekty. Są też momenty, że nie współdziała zbyt dobrze z ArcGIS (okna znikają i tak dalej). Istnieje „uproszczona” biblioteka GUI o nazwie EASYGUI, która jest oparta na Tkinter, i jest o wiele ładniejsza i łatwiejsza do kontrolowania. Bawiłem się trochę i uważałem, że jest o wiele bardziej przyjazny niż Tkinter.

jonatr
źródło
4

Próbowałem tego, co chcesz zrobić, i Jason ma rację - użyj wbudowanych narzędzi. Jeśli spróbujesz uruchomić prawie dowolny zestaw widżetów GUI Pythona w procesie Arcmap, napotkasz różnego rodzaju kłopoty - próbowałem. Najlepiej uruchomić GUI poza procesem i porozmawiać z Arcmap poprzez COM Arcobjects, używając IGeoprocessor do uruchamiania narzędzi. Ale jeśli w twoim obiekcie są po prostu uruchomione narzędzia i skrypty geoprzetwarzania, naprawdę nie możesz zrobić nic lepszego niż zbudowanie własnego zestawu narzędzi i korzystania ze standardowych interfejsów narzędzi.

grafika 21
źródło
2

Możesz po prostu zbudować GUI w .NET lub Mono, a następnie uruchomić skrypt Python poprzez obiekt Process .

Donny V.
źródło