Saya ingin membuat toolbar dengan 2 tombol, masing-masing tombol membuka bentuk yang berbeda.
Langkah-langkah yang saya ikuti adalah:
Membuat plugin menggunakan Plugin builder
Membuat toolbar dengan 2 tombol dengan melakukan modifikasi yang diperlukan dalam file implementasi.
Sampai di sini, semuanya berfungsi dengan baik, jadi ketika tombol pertama diklik, formulir yang sesuai terbuka dengan benar. Formulir ini adalah yang dibuat oleh pembuat Plugin.
Lalu saya ingin memiliki formulir kedua yang akan terbuka ketika tombol kedua diklik. Begitu:
Membuat formulir baru di desainer Qt (form2.ui),
Diterjemahkan file ui ke file py (make) dan mengimpor kelas dari file py yang diterjemahkan ke dalam file implementasi, mendapat instance dari kelas (self.dlg2 = Ui_form2 ())
dan dalam menjalankan () metode dari file implementasi yang saya tulis:
def run2(self):
self.dlg2.show()
result = self.dlg2.exec_()
Tapi kemudian saya mendapatkan pesan kesalahan bahwa formulir baru ini tidak memiliki metode .show (). Haruskah ia mewarisi sesuatu untuk mengimplementasikan metode .show ()? Tetapi bagaimana saya bisa memodifikasi kode dari bentuk kedua untuk mewarisi sesuatu karena semua perubahan dalam file py yang diterjemahkan dari file ui tidak dapat disimpan?
sumber
initGui()
, dengan cara ini:self.add_action( icon_path, text=self.tr(u'plugin3'), callback=self.run3, parent=self.iface.mainWindow())
1 . Gunakan pembuat Plugin untuk membuat plugin baru
File yang dibuat ditunjukkan pada gambar berikut
2 . Konversikan file sumber daya ( resources.qrc ) menjadi file Python ( resources.py ) menggunakan OSGeo4W Shell
Setelah itu, jika Anda melihat ke dalam folder plugin , Anda akan melihat file .py baru , file resources.py yang baru saja dibuat. Plugin sekarang dapat diinstal dan dibuka melalui menu QGIS utama> Kelola dan instal Plugin.
3 . CARA MEMBUAT TOOLBAR DAN ALAT (tombol) DAN TAMBAHKAN ALAT-ALAT DI TOOLBAR
Buka dengan editor file my_toolbar.py dan di bagian initGui (self) tulis:
Dengan cara ini tiga tombol / alat telah dibuat.
Agar tombol muncul di bilah alat, lanjutkan menulis yang berikut:
Agar tombol ketika diklik untuk membuka gui lanjutkan menulis yang berikut ini:
Metode runtool1 , runtool2 dan runtool3 didefinisikan kemudian sebagai berikut untuk membuka gui yang berbeda untuk setiap tombol
Dengan begitu ketika tombol tool1 diklik, gui dlgtool1 akan terbuka, ketika tombol tool2 diklik, dlgtool2 akan terbuka dan ketika tombol tool3 diklik, gui dlgtool3 akan terbuka.
dlgtool1 , dlgtool2 dan dlgtool3 harus menjadi variabel yang menunjuk ke file ui yang mewakili dialog .
Jadi dialognya harus:
dibuat ,
diimpor ke file py utama ( my_toolbar.py ) dan
ditugaskan ke variabel ( dlgtool1 , dlgtool2 dan dlgtool3 ) untuk mendapatkan turunan dari mereka.
Untuk membuat dialog :
Buka Form_dlgtool1_dialog.py dengan editor untuk menerapkan modifikasi berikut:
Dari :
Ubah ke :
Ikuti prosedur yang sama untuk dua file lainnya ( Form_dlgtool2_dialog.py dan Form_dlgtool3_dialog.py )
Kemudian, untuk mengimpor dialog ke file utama buka file my_toolbar.py dengan editor dan impor yang berikut ini
Akhirnya, untuk mendapatkan contoh dari mereka , tuliskan yang berikut di bagian def __init __ (self, iface) :
Sekarang, Anda dapat membuka file ui di QtDesigner dan menyesuaikannya. Kemudian muat ulang toolbar plugin di dalam QGIS untuk mendapatkan hasil berikut hte
sumber