Чтобы виджет был частью окна, он должен быть дочерним элементом окна или дочерним элементом дочернего элемента окна, в случае QMainWindow он должен быть от centralWidget, для этого есть 2 метода:
- Пройдите к окну как родитель.
# ...
# pass self.centralwidget as parent
self.viewer = QtSvg.QSvgWidget(self.centralwidget)
self.viewer.load('C:/Windows/Temp/tubesheetsvgpreview.svg')
self.viewer.setGeometry(QtCore.QRect(0,0,600,600))
# ...
- Установите виджет через макет.
# ...
self.centralwidget.setObjectName("centralwidget")
self.viewer = QtSvg.QSvgWidget()
self.viewer.load('C:/Windows/Temp/tubesheetsvgpreview.svg')
self.viewer.setGeometry(QtCore.QRect(0,0,600,600))
# set the layout to centralWidget
lay = QtWidgets.QVBoxLayout(self.centralwidget)
# add the viewer to the layout
lay.addWidget(self.viewer)
MainWindow.setCentralWidget(self.centralwidget)
# ...
Обновление:
Если вы хотите центрировать виджет, лучше использовать второй метод и установить выравнивание:
# ...
lay = QtWidgets.QVBoxLayout(self.centralwidget)
lay.addWidget(self.viewer, alignment=QtCore.Qt.AlignCenter) # <---
# ...
В случае первого метода переместите официальный виджет (и, по сути, это то, что делает макет в другом методе), но вам придется делать то же самое каждый раз, когда виджет изменяется в размере.
Итак, самый простой способ - использовать макет.