Table of Contents
Note viết plugin python QGIS - phần 1 Tiếp tục hôm qua..
Vấn đề hiển thị tiếng Việt trong QMessageBox
Để hiển thị tiếng Việt trong QMessageBox, ta dùng hàm u và chuyển encoding của tệp python về UTF-8 [caption id="attachment_52" align="aligncenter" width="439"] Tiếng Việt Python[/caption]Combobox Lấy vị trí đang được chọn: currentIndex() Lấy giá trị đang được chọn: itemData(index) Thêm item vào combobox: addItem(tên, giá trị)
self.dlg.layerCombo.addItem( lyr.name(), lyr ) index=self.dlg.layerCombo.currentIndex() layer = self.dlg.layerCombo.itemData(index)Lấy danh sách các lớp bản đồ đang mở
lyrs=QgsMapLayerRegistry.instance().mapLayers().values()Thêm lớp bản đồ, dùng thư viện OGR
#add layer layer1=QgsVectorLayer("C:/Users/dtlong/Desktop/pyqgis_code_data/pyqgis_data/alaska.shp","layer_name_you_like", "ogr") QgsMapLayerRegistry.instance().addMapLayer(layer1)LineEdit (Textbox) Lấy giá trị của textbox
fname=self.dlg.lineEdit.text()
fname=self.dlg.lineEdit.text()Bảng thuộc tính của bản đồ Lấy tất cả các tên field
fields=layer.pendingFields() fieldnames=[] for field in fields: #QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(field.name())) fieldnames.append(field.name()) #cach viet tat #fieldnames = [field.name() for field in fields]Full code ghi thông tin thuộc tính các đối tượng bản đồ
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())) #ghi file fname=self.dlg.lineEdit.text() #QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%s'%(layer)) fghi=open(fname,'w') #get field layer fields=layer.pendingFields() #QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%s'%(fields)) #QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%d'%(len(fields))) #for i in range(0,len(fields)): #QMessageBox.information(self.iface.mainWindow(),"duong dan",'%d'%(i)) fieldnames=[] for field in fields: #QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(field.name())) fieldnames.append(field.name()) #cach viet tat #fieldnames = [field.name() for field in fields] for fieldname in fieldnames: QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(fieldname)) for f in layer.getFeatures(): line = ','.join(unicode(f[x]) for x in fieldnames) + '\n' unicode_line = line.encode('utf-8') fghi.write(unicode_line) fghi.close() #fghi.write('hahahahah')Kết quả [caption id="attachment_54" align="aligncenter" width="1165"] plugin ghi thuộc tính qgis[/caption] -Kết thúc^^