import os import sys from qgis.gui import * from qgis.core import * from qgis.PyQt.QtCore import * from qgis.PyQt.QtWidgets import * class MapViewer(QMainWindow): def __init__(self, shapefile): QMainWindow.__init__(self) self.setWindowTitle("Map Viewer") canvas = QgsMapCanvas() canvas.setCanvasColor(Qt.white) canvas.show() project = QgsProject.instance() project.read(r'E:/data/1.Natural_Earth/Test.qgz') layer = QgsVectorLayer(shapefile, "layer1", "ogr") if not layer.isValid(): raise IOError("Invalid shapefile") # project.addMapLayer(layer) # canvas.setExtent(layer.extent()) # canvas.setLayers([layer]) layers = project.mapLayers().values() canvas.setLayers(layers) 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()