Table of Contents
Hôm nay mình sẽ note lại quá trình tìm hiểu plugin QGIS (updating this post)
Cài plugin builder
Nhập thông tin plugin Lưu plugin vào thư mụcc:\Users\username.qgis2\python\pluginsCompile the resources file using pyrcc4 Mở OSGeo4W
Sau khi compile xong ta sẽ có các file python tương ứng Load plugin vào QGIS Sử dụng QT Creator Mở file *.ui trong thư mục plugin Thêm combo box và label test thử Một số code Qpython dùng consolepyrcc4 -o resources.py resources.qrc pyuic4 -o soiqualang_dialog_base.py soiqualang_dialog_base.ui
Lỗi unexpected indent khi edit python trên Notepad++ Cái này do Notepad++ thêm ký tự lạ khi ta xuống dòng và sử dụng chức năng Auto indent của Notepad++ Giải quyết Thêm lựa chọn cho comboboxfrom qgis.core import * import qgis.utils layer=qgis.utils.iface.activeLayer() print(layer.featureCount()) print(layer.source()) print(layer.name()) for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): print(lyr.name()) #add layer layer1=QgsVectorLayer(“C:/Users/dtlong/Desktop/pyqgis_code_data/pyqgis_data/alaska.shp”,“layer_name_you_like”, “ogr”) QgsMapLayerRegistry.instance().addMapLayer(layer1)
Dùng phương thức addItem Ta sẽ get all layers hiện đang mở, sau đó chạy vòng lập để gán vào comboboxself.dlg.layerCombo.addItem( ‘hahaha’, 'hohoho’ )Với layerCombo là tên combobox
Gán hành động cho 2 nút OK và Cancellyrs=QgsMapLayerRegistry.instance().mapLayers().values() for lyr in lyrs: self.dlg.layerCombo.addItem( lyr.name(), lyr )
0: Cancel 1: Okif result==1: # Do something useful here - delete the line containing pass and # substitute with your code. index=self.dlg.layerCombo.currentIndex() layer = self.dlg.layerCombo.itemData(index) QMessageBox.information(self.iface.mainWindow(),“hello world”,“%s has %d features.” %(layer.name(),layer.featureCount())) pass if result==0: QMessageBox.information(self.iface.mainWindow(),u"Tiêu đề cancel",u'Khang bị khùng’)
Cách gán sự kiện cho 1 thành phần trên giao diện
Ta sẽ gán sự kiện mở hộp thoại chọn file cho nút … Đầu tiên, để có thể sử dụng được hộp thoại mở file và hộp thoại thông báo, ta cần khai báo ở đây Viết hàm hộp thoại mở file Mở hộp thoại và gán đường dẫn cho lineEditGán hàm mở file cho nút … Ta sẽ gán sự kiện onclick cho nút pushButton vào trong hàm add_actiondef selectoutput(self): fname = QFileDialog.getSaveFileName(self.dlg, “Select output file ”,“”, ’*.txt’) self.dlg.lineEdit.setText(fname)
Kết quả: ]]>#them su kien click vao nut … self.dlg.lineEdit.clear() self.dlg.pushButton.clicked.connect(self.selectoutput)
Bài viết rất bổ ích! Mình rất vui khi được copy toàn bộ website này về website mình nếu được sự đồng ý của anh Long Đẹp Trai! @@