自定义窗口类加载显示地图
import sys
from qgis.PyQt.QtCore import Qt
from qgis.PyQt.QtWidgets import QMainWindow,QVBoxLayout,QWidget
from qgis.core import (
QgsApplication,
QgsVectorLayer,
QgsProject
)
from qgis.gui import (
QgsMapCanvas
)
class MapViewer(QMainWindow):
def __init__(self,shapefile):
QMainWindow.__init__(self)
self.setWindowTitle("Map Viewer")
canvas =QgsMapCanvas()
canvas.setCanvasColor(Qt.white)
canvas.show()
layer=QgsVectorLayer(shapefile,"layer1","ogr")
if not layer.isValid():
raise IOError("Invalid shapefile")
QgsProject.instance().addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayers([layer])
layout=QVBoxLayout()
layout.addWidget(canvas)
contents=QWidget()
contents.setLayout(layout)
self.setCentralWidget(contents)
if __name__=="__main__":
QgsApplication.setPrefixPath("qgis",True)
qgs=QgsApplication([],True)
qgs.initQgis()
viewer=MapViewer("./data/Counties.shp")
viewer.show()
exitCode=qgs.exec()
qgs.exitQgis()
执行
c:\OSGeo4W\bin\python-qgis-ltr.bat demo1\mymapviewer.py
结果: