Разработка GUI в Python для геообработки ArcGIS с использованием PyQT / Tkinter / wxPython?

13

Я хочу разработать графический интерфейс в Python для геообработки ArcGIS.

Могу ли я использовать PyQT для программирования GUI в ArcGIS?

Я также рассмотрел использование Tkinter и wxPython.

BBG_GIS
источник

Ответы:

21

Я бы поставил под сомнение необходимость использования вашего собственного графического интерфейса для геообработки.

Идея инструмента геообработки состоит в том, что он проходит через стандартные интерфейсы (диалог прогресса GP, если он включен для сообщений и диалог прогресса, диалог инструмента GP для настройки параметров и запуска инструмента и т. Д.), И я хотел бы услышать использовать случай для попытки обойти это все.

В общем, все зависит от того, что лучше для вас.

  1. Tkinter является встроенным, но довольно уродливым и сложным, чтобы получить что-то сложное и работающее, но если вы напишите в нем пользовательский интерфейс, он будет работать практически везде .
  2. Wx и PyQT оба близки к функционально эквивалентным, хотя примеры wxPython полезны для изучения, а инструменты разработчика QT немного приятнее. Посмотрите на API обоих и определите, какой из них выглядит лучше для вас.

Я не упомянул, что PyQT работает немного более стабильно в ArcMap и других программах со своими собственными циклами событий, чем Wx или Tk. Программы Wx и Tk, как правило, ожидают быть единственными потоками пользовательского интерфейса, работающими в процессе, и неправильно работают с циклами событий в других программах с графическим интерфейсом.

Джейсон Шайрер
источник
8

Я с Джейсоном - вы должны действительно рассмотреть необходимость графического интерфейса геообработки, так как диалоговое окно прогресса геообработки ArcGIS (по крайней мере, в 9.3.1, не знаю около 10) может быть немного настроено для адаптации к вашим потребностям (добавление сообщения, лог-файлы, прогрессоры и т. д.).

Исходя из моего опыта, Tkinter легко понять, но он сложен, когда требуется совершенно нестандартный дизайн. Кроме того, бывают случаи, когда он не очень хорошо взаимодействовал с ArcGIS (исчезают окна и тому подобное). Существует «упрощенная» библиотека GUI под названием EASYGUI, которая основана на Tkinter, и намного приятнее и проще в управлении. Я немного поиграл с этим и обнаружил, что он намного дружелюбнее, чем Tkinter.

jonatr
источник
4

Я попробовал то, что вы хотите сделать, и Джейсон прав - используйте встроенные инструменты. Если вы попытаетесь запустить практически любой набор графических виджетов Python внутри процесса Arcmap, вы столкнетесь с проблемами различного рода - я пробовал это. Лучше всего запускать ваш GUI вне процесса и общаться с Arcmap через COM Arcobjects, используя IGeoprocessor для запуска инструментов. Но если ваш объект просто запускает инструменты геообработки и сценарии, вы действительно не сможете добиться большего успеха, чем создание собственных инструментов панели инструментов и использование стандартных интерфейсов инструментов.

artwork21
источник
2

Вы можете просто построить графический интерфейс в .NET или Mono, а затем запустить скрипт Python через объект Process .

Донни В.
источник