Membuat tombol yang memanggil skrip Python sebagai perintah daripada alat skrip?

12

Saya percaya bahwa di Arc9.3, perintah dapat dibuat menggunakan skrip VBA. Untuk menambahkan perintah kustom, Anda akan menavigasi ke Customize> Toolbars> Customize ... dan klik UIControls. Namun, UIControls tidak ada di versi 10.

Saya membuat dua skrip terpisah untuk proyek buku peta. Satu skrip akan menyimpan pengaturan tata letak ke tabel, dan yang lainnya akan memperbarui tata letak dengan pengaturan dari tabel yang sama. Saya ingin kedua skrip ini menjadi perintah yang ditetapkan ke tombol di bilah alat. Saya membuatnya sebagai alat skrip, tetapi setiap kali saya mengkliknya, mereka menjalankan skrip sebagai alat geoproses. Ini memunculkan jendela kemajuan, dan dibutuhkan sekitar 10 kali lebih lama untuk mengeksekusi daripada jika saya telah menjalankan kode di jendela baris perintah Python. Saya tidak ingin jendela progres atau waktu eksekusi yang lebih lama.

Bagaimana saya bisa membuatnya sehingga skrip tidak dianggap sebagai "alat" dan bukan perintah yang mirip dengan tombol Simpan?

Penyamak
sumber

Jawaban:

6

Di dalam makro Excel VBA, berikut ini memanggil skrip Python yang disebut test.py:

Sub test()

rsp = Shell(Environ$("COMSPEC") & " /c C:/test.py", vbNormalFocus)

End Sub

(Sumber asli di sini ) Saya lupa bagaimana menjalankan modul ArcGIS VBA, tapi mungkin baris yang sama akan bekerja untuk memanggil skrip python Anda.


Strategi lain yang mungkin berhasil adalah mengkompilasi skrip python Anda ke file executable (.exe) atau batch (.bat) dan kemudian memanggilnya.


Saya hanya melihat jawaban lain di gis.se yang lebih elegan:

Private Sub python_Click()
    Shell "C:\Python25\python.exe ""C:\rowcount.py"
End Sub
djq
sumber