Почему не отображается OGR-слой?

Пишу приложение на python с использованием qgis и pyqt5. В приложении создаю инструмент добавления слоя:

def addLayer(self):
    # Слой должен быть в той же папке, что и файл приложения
    # Имя слоя задано в коде
    # Создать слой
    layer = QgsVectorLayer('test.shp', 'test', 'ogr')

    if not layer.isValid():
        print("Layer failed to load!")
    else:
        # Добавить слой в реестр
        QgsProject.instance().addMapLayer(layer)
        # Установить охват карты равным охвату слоя
        self.canvas.setExtent(layer.extent())
    for field in layer.fields():
        print(field.name(), field.typeName())

При запуске приложения слой не отображается на карте. Хотя ошибка не вылетает, так же название и тип данных из загружаемого shape-файла выводятся, значит сам инструмент добавления слоя работает. Пробовала менять shape-файлы, не помогло. Пробовала прописывать загрузку слоя при открытии приложения - ничего. Весь код приложения:

   from PyQt5.QtWidgets import QApplication, QFrame, QGridLayout, QMainWindow, QVBoxLayout
   from PyQt5.QtGui import QPainter, QColor, QFont
   from PyQt5.QtCore import pyqtSignal
   from qgis.gui import QgsMapCanvas, QgsMapToolPan, QgsMapToolZoom 
   from qgis.core import QgsApplication, QgsVectorLayer, QgsProject, QgsMarkerSymbol 
   import sys,os
   
# Импорт созданного интерфейса
from mainwindow_ui import Ui_MainWindow
   
app = QApplication([])
qgs = QgsApplication([], False)

qgs.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
qgs.initQgis()

class MainWindow(QMainWindow, Ui_MainWindow):
    triggered = pyqtSignal()
    def __init__( self ):
        QMainWindow.__init__( self )
        
        self.setupUi( self )
    
        # Устанавливаем заголовок окна
        self.setWindowTitle('QGIS Demo')

        # Создаем карту
        self.canvas = QgsMapCanvas()
        # Задаем цвет фона карты
        self.canvas.setCanvasColor(QColor( 200, 200, 255 ))
        self.canvas.enableAntiAliasing(True)
        self.canvas.show()

        # Размещаем виджеты в окне
        self.layout = QVBoxLayout(self.frame)
        self.layout.addWidget(self.canvas)

        # Задаем действия для каждого из инструментов и соединяем их с соответствующими методами
        self.actionAdd_Layer.triggered.connect(self.addLayer)
        self.actionZoom_In.triggered.connect(self.zoomIn)
        self.actionZoom_Out.triggered.connect(self.zoomOut)
        self.actionPan.triggered.connect(self.pan)
        self.actionZoom_Full.triggered.connect(self.zoomFull)

        # Создаем панель инструментов
        self.toolbar = self.addToolBar("Map")
        
        # Добавляем действия на панель инструментов
        self.toolbar.addAction(self.actionAdd_Layer);
        self.toolbar.addAction(self.actionZoom_In);
        self.toolbar.addAction(self.actionZoom_Out);
        self.toolbar.addAction(self.actionPan);
        self.toolbar.addAction(self.actionZoom_Full);

        # Создаем инструменты карты
        self.toolPan = QgsMapToolPan(self.canvas)
        self.toolPan.setAction(self.actionPan)
        self.toolZoomIn = QgsMapToolZoom(self.canvas, False) # false = уменьшить
        self.toolZoomIn.setAction(self.actionZoom_In)
        self.toolZoomOut = QgsMapToolZoom(self.canvas, True) # true = увеличить
        self.toolZoomOut.setAction(self.actionZoom_Out)

    # Установить инструмент увеличения
    def zoomIn( self ):
        self.canvas.setMapTool(self.toolZoomIn)
  
    # Установить инструмент уменьшения
    def zoomOut( self ):
        self.canvas.setMapTool(self.toolZoomOut)
  
    # Установить инструмент для перемещения
    def pan( self ):
        self.canvas.setMapTool(self.toolPan)
  
    # Установить инструмент показа карты полностью
    def zoomFull( self ):
        self.canvas.zoomToFullExtent()
  
    # Добавить OGR-слой
    def addLayer(self):

        # Слой должен быть в той же папке, что и файл приложения
        # Имя слоя задано в коде
        # Создать слой
        layer = QgsVectorLayer('test.shp', 'test', 'ogr')

        if not layer.isValid():
            print("Layer failed to load!")
        else:
            # Добавить слой в реестр
            QgsProject.instance().addMapLayer(layer)
            # Установить охват карты равным охвату слоя
            self.canvas.setExtent(layer.extent())
        for field in layer.fields():
            print(field.name(), field.typeName())

def main(app):
  # Создание приложения
    wnd = MainWindow()
    wnd.show()
    app.exec()


if __name__ == "__main__":
    main(app)

Ответы (1 шт):

Автор решения: vupsen
layer_tree = QgsProject.instance().layerTreeRoot()
layer_tree.addLayer(layer)
QgsProject.instance().addMapLayer(layer)
→ Ссылка