Search code examples
pythonenumspyqtpyqt6

Qt module alternative for PyQt6


I'm just migrating my application from PyQt5 to PyQt6. I understand that the Qt module has been removed in Qt6. I have stuff like 'Qt.AlignCenter', 'Qt.ToolButtonTextUnderIcon', 'Qt.LeftToolBarArea', which are no longer working. Is there any alternative for this functionality in Qt6?


Solution

  • The Qt module only exists in PyQt5 (not in Qt5) that allowed access to any class or element of any submodule, for example:

    $ python
    >>> from PyQt5 import Qt
    >>> from PyQt5 import QtWidgets
    >>> assert Qt.QWidget == QtWidgets.QWidget
    

    That module is different from the Qt namespace that belongs to the QtCore module, so if you want to access Qt.AlignCenter then you must import Qt from QtCore:

    import sys
    from PyQt6.QtCore import Qt
    from PyQt6.QtWidgets import QApplication, QLabel
    
    
    def main():
        app = QApplication(sys.argv)
        w = QLabel()
        w.resize(640, 498)
    
        w.setAlignment(Qt.Alignment.AlignCenter)
        w.setText("Qt is awesome!!!")
        w.show()
    
        app.exec()
    
    
    if __name__ == "__main__":
        main()
    from PyQt6.QtCore import Qt
    from PyQt6.QtGui import QIcon
    from PyQt6.QtWidgets import QApplication, QMainWindow, QStyle, QToolBar
    
    
    def main():
        import sys
    
        app = QApplication(sys.argv)
    
        toolbar = QToolBar()
        toolbar.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextUnderIcon)
    
        icon = app.style().standardIcon(QStyle.StandardPixmap.SP_DesktopIcon)
        toolbar.addAction(icon, "desktop")
    
        w = QMainWindow()
        w.addToolBar(Qt.ToolBarAreas.LeftToolBarArea, toolbar)
        w.show()
    
        sys.exit(app.exec())
    
    
    if __name__ == "__main__":
        main()