1 . Sử dụng Plugin builder để tạo ra một plugin mới
Các tập tin được tạo được hiển thị trong hình dưới đây
2 . Chuyển đổi tệp tài nguyên ( resource.qrc ) thành tệp Python ( resource.py ) bằng Shell OSGeo4W
pyrcc4 -o resources_rc.py resources.qrc
Sau đó, nếu bạn nhìn vào bên trong thư mục plugin , bạn sẽ thấy một tệp .py mới , tệp resource.txt vừa được tạo. Hiện tại, plugin có thể được cài đặt và mở thông qua menu chính của QGIS> Quản lý và cài đặt Plugin.
3 . CÁCH TẠO CÁC CÔNG CỤ VÀ CÁC CÔNG CỤ (các nút) VÀ THÊM CÁC CÔNG CỤ TRÊN CÔNG CỤ
Mở bằng trình chỉnh sửa tệp my_toolbar.py và trong phần của initGui (tự) viết:
def initGui(self):
self.toolBar = self.iface.addToolBar("MY TOOLBAR tools")
self.toolBar.setObjectName("MY TOOLBAR tools")
self.act1 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool1"), self.iface.mainWindow())
self.act2 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool2"), self.iface.mainWindow())
self.act3 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool3"), self.iface.mainWindow())
Bằng cách này, ba nút / công cụ đã được tạo.
Để các nút xuất hiện trên thanh công cụ, hãy tiếp tục viết như sau:
self.toolBar.addAction(self.act1)
self.toolBar.addAction(self.act2)
self.toolBar.addAction(self.act3)
Để các nút khi nhấp để mở gui, hãy tiếp tục viết như sau:
QObject.connect(self.act1, SIGNAL("triggered()"), self.runtool1)
QObject.connect(self.act2, SIGNAL("triggered()"), self.runtool2)
QObject.connect(self.act3, SIGNAL("triggered()"), self.runtool3)
Các phương thức runtool1 , runtool2 và runtool3 được định nghĩa sau như sau để mở một gui khác nhau cho mỗi nút
def runtool1(self):
self.dlgtool1.show()
def runtool2(self):
self.dlgtool2.show()
def runtool3(self):
self.dlgtool3.show()
Bằng cách đó khi nút tool1 được nhấp gui dlgtool1 sẽ mở ra, khi nút tool2 được nhấp các dlgtool2 sẽ mở ra và khi nút tool3 được nhấp các dlgtool3 gui sẽ mở ra.
dlgtool1 , dlgtool2 và dlgtool3 nên là các biến chỉ vào các tệp ui đại diện cho các hộp thoại .
Vì vậy, các hộp thoại phải là:
tạo ,
được nhập vào tệp py chính ( my_toolbar.py ) và
được gán cho các biến ( dlgtool1 , dlgtool2 và dlgtool3 ) để lấy một thể hiện của chúng.
Để tạo các hộp thoại :
- Sao chép các tập tin my_toolbar_dialog.py và my_toolbar_dialog_base.ui
và dán chúng vào một thư mục khác để bạn có thể đổi tên chúng. Làm điều này nhiều lần nếu cần, cho ví dụ này ba lần.
Sau đó sao chép các tệp mới này và dán chúng trở lại thư mục Myplugintoolbar
Mở Form_dlgtool1_dialog.py bằng trình chỉnh sửa để áp dụng các sửa đổi sau:
Từ :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'my_toolbar_dialog_base.ui'))
class MyplugintoolbarDialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(MyplugintoolbarDialog, self).__init__(parent)
self.setupUi(self)
Thay đổi thành :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'Form_dlgtool1.ui'))
class Formdlgtool1Dialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(Formdlgtool1Dialog, self).__init__(parent)
self.setupUi(self)
Thực hiện theo quy trình tương tự cho hai tệp khác ( Form_dlgtool2_dialog.py và Form_dlgtool3_dialog.py )
Sau đó, để nhập các hộp thoại vào tệp chính, hãy mở tệp my_toolbar.py bằng trình chỉnh sửa và nhập thông tin sau
from Form_dlgtool1_dialog import Formdlgtool1Dialog
from Form_dlgtool2_dialog import Formdlgtool2Dialog
from Form_dlgtool3_dialog import Formdlgtool3Dialog
Cuối cùng, để có được một thể hiện của chúng , hãy viết phần bên trong phần def __init __ (self, iface) :
self.dlgtool1 = Formdlgtool1Dialog()
self.dlgtool2 = Formdlgtool2Dialog()
self.dlgtool3 = Formdlgtool3Dialog()
Bây giờ, bạn có thể mở các tệp ui trong QtDesigner và tùy chỉnh chúng. Sau đó tải lại thanh công cụ plugin bên trong QGIS để nhận kết quả sau