ฉันต้องการพัฒนา GUI ใน Python สำหรับการประมวลผลทางภูมิศาสตร์ของ ArcGIS
ฉันสามารถใช้ PyQT สำหรับการเขียนโปรแกรม GUI ใน ArcGIS ได้หรือไม่
ฉันพิจารณาใช้ Tkinter และ wxPython ด้วย
ฉันต้องการพัฒนา GUI ใน Python สำหรับการประมวลผลทางภูมิศาสตร์ของ ArcGIS
ฉันสามารถใช้ PyQT สำหรับการเขียนโปรแกรม GUI ใน ArcGIS ได้หรือไม่
ฉันพิจารณาใช้ Tkinter และ wxPython ด้วย
คำตอบ:
ฉันจะถามถึงความจำเป็นในการใช้ GUI ของคุณเองสำหรับการประมวลผลทางภูมิศาสตร์
แนวคิดของเครื่องมือการประมวลผลทางภูมิศาสตร์คือมันต้องผ่านอินเทอร์เฟซมาตรฐาน (กล่องโต้ตอบความคืบหน้าของ GP หากเปิดใช้งานสำหรับข้อความและกล่องโต้ตอบความคืบหน้า, กล่องโต้ตอบเครื่องมือ GP สำหรับการตั้งค่าพารามิเตอร์และเรียกใช้เครื่องมือ ฯลฯ ) และฉันต้องการได้ยิน ใช้กรณีเพื่อพยายามหลีกเลี่ยงสิ่งนั้นทั้งหมด
ทั้งหมดในทุกเรื่องมันเป็นเรื่องของสิ่งที่ดีที่สุดสำหรับคุณ
ฉันล้มเหลวที่จะพูดถึงว่า PyQT ดูเหมือนจะทำงานในแบบที่เสถียรกว่าเล็กน้อยใน ArcMap และโปรแกรมอื่น ๆ ที่มีลูปเหตุการณ์ของตนเองมากกว่า Wx หรือ Tk โปรแกรม Wx และ Tk มีแนวโน้มที่จะคาดหวังว่าจะเป็นเธรด UI เดียวที่ทำงานในกระบวนการและทำงานผิดปกติกับลูปเหตุการณ์ในโปรแกรม GUI อื่น ๆ
ฉันอยู่กับJason - คุณควรพิจารณาถึงความจำเป็นของ GUI สำหรับกระบวนการทางภูมิศาสตร์เนื่องจากกล่องโต้ตอบความคืบหน้าการดำเนินการทางภูมิศาสตร์ของ ArcGIS (อย่างน้อยใน 9.3.1, ไม่ทราบเกี่ยวกับ 10) สามารถปรับแต่งเล็กน้อยเพื่อปรับให้เข้ากับความต้องการของคุณ ข้อความ, logfiles, แถบความก้าวหน้าและอื่น ๆ )
จากประสบการณ์ของฉัน Tkinter นั้นเข้าใจง่าย แต่ซับซ้อนเมื่อต้องการการออกแบบนอกกรอบมาก นอกจากนี้ยังมีบางครั้งที่มันไม่ทำงานได้ดีกับ ArcGIS (หน้าต่างหายไปและเช่นนั้น) มีไลบรารี GUI "ที่ทำให้เข้าใจง่าย" ซึ่งเรียกว่า EASYGUI ซึ่งใช้ Tkinter และมีการควบคุมที่ดีกว่าและง่ายกว่ามาก ฉันเล่นกับมันเล็กน้อยและพบว่ามันเป็นมิตรกว่า Tkinter มาก
ฉันลองทำในสิ่งที่คุณต้องการแล้วเจสันก็ใช้เครื่องมือในตัว หากคุณลองและรัน python gui widget ชุดใดก็ได้ในกระบวนการ Arcmap คุณจะพบปัญหาหลาย ๆ อย่าง - ฉันได้ลองแล้ว ที่ดีที่สุดในการรัน GUI นอกกระบวนการและพูดคุยกลับไปที่ Arcmap ผ่าน COM Arcobjects โดยใช้ IGeoprocessor เพื่อเรียกใช้เครื่องมือ แต่ถ้าวัตถุของคุณกำลังเรียกใช้เครื่องมือและสคริปต์การประมวลผลเชิงภูมิศาสตร์คุณไม่สามารถทำได้ดีกว่าการสร้างเครื่องมือกล่องเครื่องมือของคุณเองและใช้ส่วนต่อประสานเครื่องมือมาตรฐาน