Using PyQt6
I can instantiate a QMainWindow
using something like:
import sys
from PyQt6.uic import loadUi
from PyQt6.QtWidgets import QApplication, QMainWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
loadUi("mainwindow.ui", self)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
exit(app.exec())
The equivalent pyside6
code:
import sys
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
QUiLoader().load("mainwindow.ui", self)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
exit(app.exec())
This does not work because second parameter of QUiLoader().load()
is the parent
and thus I should add the resulting widget to my MainWindow
thus preventing me to design the whole Main Window in Qt-Designer.
I know I could instantiate the whole MainWindow
from main
, such as:
import sys
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtUiTools import QUiLoader
app = QtWidgets.QApplication(sys.argv)
window = QUiLoader().load("mainwindow.ui", None)
window.show()
exit(app.exec())
... but that would prevent me to subclass QMainWindow
to add my own code.
What is the right way to port PyQt6
code to pyside6
?