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

GUI App

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

結論

PyQt5:setFrameStyle(QFrame.Panel)
PyQt6:setFrameStyle(QFrame.Shape.Panel)

コード例

下記アプリを例に説明する。

PyQt5のコード

#!/usr/bin/env python3

from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QFrame)
import sys


class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.線を引く()
        self.文字()
        self.show()

    def 線を引く(self):
        self.線 = QFrame(self)
        self.線.setFrameStyle(QFrame.Panel)  # ?
        self.線.setGeometry(30, 95, 200, 20)  # 開始位置x, 開始位置y, x幅, y高さ

    def 文字(self):
        self.label1 = QLabel('女風呂', self)
        self.label1.setGeometry(110,40,100,30)
        self.label2 = QLabel('男風呂', self)
        self.label2.setGeometry(110,140,100,30)


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

PyQt6のコード

#!/usr/bin/env python3

from PyQt6.QtWidgets import (QApplication, QWidget, QLabel, QFrame)
import sys


class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.線を引く()
        self.文字()
        self.show()

    def 線を引く(self):
        self.線 = QFrame(self)
        self.線.setFrameStyle(QFrame.Shape.Panel)  # ?
        self.線.setGeometry(30, 95, 200, 20)  # 開始位置x, 開始位置y, x幅, y高さ

    def 文字(self):
        self.label1 = QLabel('女風呂', self)
        self.label1.setGeometry(110,40,100,30)
        self.label2 = QLabel('男風呂', self)
        self.label2.setGeometry(110,140,100,30)


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

まとめ

‘QFrame’ has no attribute ‘Panel’の対処方法を説明した。

コメント