프로그래밍/파이썬

파이썬 Python QT PyQt QFormLayout

에이티에스 2023. 6. 22. 09:00
728x90

PyQt QFormLayout 소개

데이터 입력 양식을 만들 때 필드를 행에 배치해야 하는 경우가 많습니다. 그리고 각 행에서 입력 위젯 옆에 레이블을 배치합니다.

PyQt는 폼에 위젯을 정렬하는 편리한 2열 폼을 제공합니다. 왼쪽 열에는 레이블이 있고 오른쪽 열에는 입력 위젯이 있습니다.

양식 레이아웃을 만들려면 QFormLayout class를 사용합니다.

layout = QFormLayout(self)
self.setLayout(layout) # self is the parent widgetCode language: Python (python)

 

양식 레이아웃에 위젯을 추가하는 작업은 addRow()를 사용하여 수행할 수 있습니다.

 

예를 들어:

layout.addRow('Field 1', input_widget1)
layout.addRow('Field 2', input_widget2)Code language: Python (python)

addRow()  메서드는 문자열과 QLabel위젯을 가져와서 문자열에 대한 위젯을 자동으로 만듭니다.

QLabel와 같은 단일 위젯을 전달하면 위젯이 자동으로 두 열에 걸쳐 있습니다. 실제로 이 기능을 사용하여 제목 또는 섹션 레이블을 만들 수 있습니다.

 

QFormLayout는 편의성을 제공하는 것 외에도 플랫폼의 모양과 느낌 지침을 준수합니다. 예를 들어 macOS에서 사용할 때 레이블은 오른쪽으로 정렬되고 Windows에서 사용되는 경우 레이블은 왼쪽 정렬됩니다.

또한 좁은 화면에 표시될 때 레이아웃은 입력 위젯 위에 레이블이 있는 단일 열로 자동으로 축소됩니다.

 

 

PyQt QFormLayout 예제

다음 예제에서는QFormLayout 를 사용하여 가입 양식을 만드는 방법을 보여 줍니다.

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit,  QFormLayout


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('Sign Up Form')

        layout = QFormLayout()
        self.setLayout(layout)

        layout.addRow('Name:', QLineEdit(self))
        layout.addRow('Email:', QLineEdit(self))
        layout.addRow('Password:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password))
        layout.addRow('Confirm Password:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password))
        layout.addRow('Phone:', QLineEdit(self))

        layout.addRow(QPushButton('Sign Up'))

        # show the window
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Code language: Python (python)

 

출력:

728x90
반응형
그리드형