Python | PyQt5からPyQt6へ移行(setAlignment編)AttributeError: type object ‘Qt’ has no attribute ‘AlignCenter’

GUI App

setAlignmentをPyQt5環境からPyQt6環境に移行する際のAttributeError: type object ‘Qt’ has no attribute ‘AlignCenter’の対処方法を説明する。

結論

PyQt5:setAlignment(Qt.AlignCenter)
PyQt6:setAlignment(Qt.AlignmentFlag.AlignCenter)

コード例

下記のようにテキストを中央に表示する方法を説明する。

PyQt5のコード

#!/usr/bin/env python3

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtCore import Qt

class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setGeometry(0, 0, 250, 250)
        self.build_ui()
        self.set_alignment()

    def build_ui(self):
        self.qlb = QLabel('label', self)
        self.qlb.setGeometry(25, 25, 200, 200)
        self.qlb.setStyleSheet("border: 1px solid black;")

    def set_alignment(self):
        self.qlb.setAlignment(Qt.AlignCenter)  # ?


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = GuiWindow()
    window.show()
    sys.exit(app.exec())

PyQt6のコード

#!/usr/bin/env python3

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel
from PyQt6.QtCore import Qt

class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setGeometry(0, 0, 250, 250)
        self.build_ui()
        self.set_alignment()

    def build_ui(self):
        self.qlb = QLabel('label', self)
        self.qlb.setGeometry(25, 25, 200, 200)
        self.qlb.setStyleSheet("border: 1px solid black;")

    def set_alignment(self):
        self.qlb.setAlignment(Qt.AlignmentFlag.AlignCenter)  # ?


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = GuiWindow()
    window.show()
    sys.exit(app.exec())

差分

その他、PyQt5からPyQt6への移行方法の基本は下記記事を参照。

まとめ

AttributeError: type object ‘Qt’ has no attribute ‘AlignCenter’の対処方法を説明した。

コメント