프로그래밍/python

PyQt5 QDateEdit 위젯 사용법

마루의 일상 2024. 6. 2. 01:53
728x90
반응형

PyQt5의 QDateEdit 위젯을 자세히 알아보고, 이를 사용하여 날짜 입력 기능을 구현하는 방법을 설명합니다. QDateEdit 위젯은 사용자가 날짜를 선택하고 편집할 수 있도록 하는 유용한 UI 요소입니다. 다양한 설정 옵션과 이벤트 핸들링을 통해 QDateEdit을 효과적으로 활용할 수 있습니다.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QDateEdit, QLabel
from PyQt5.QtCore import QDate

class DateEditDemo(QWidget):
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
    def initUI(self):
        # 수직 박스 레이아웃 생성
        vbox = QVBoxLayout()
        
        # QDateEdit 위젯 생성 및 초기 설정
        self.dateEdit = QDateEdit(self)
        # 초기 날짜를 현재 날짜로 설정
        self.dateEdit.setDate(QDate.currentDate())
        # 달력 팝업 활성화
        self.dateEdit.setCalendarPopup(True)
        # 선택 가능한 최소 날짜 설정
        self.dateEdit.setMinimumDate(QDate(2000, 1, 1))
        # 선택 가능한 최대 날짜 설정
        self.dateEdit.setMaximumDate(QDate(2100, 12, 31))
        # 날짜 형식 설정 (예: 2024-01-01)
        self.dateEdit.setDisplayFormat('yyyy-MM-dd')
        # 날짜 변경 이벤트 연결
        self.dateEdit.dateChanged.connect(self.dateChanged)
        
        # QLabel 생성 및 초기 텍스트 설정
        self.label = QLabel(self)
        self.label.setText("Selected Date: " + self.dateEdit.date().toString())
        
        # 레이아웃에 위젯 추가
        vbox.addWidget(self.dateEdit)
        vbox.addWidget(self.label)
        
        # 메인 레이아웃 설정
        self.setLayout(vbox)
        
        # 윈도우 설정
        self.setWindowTitle('QDateEdit Demo')
        self.setGeometry(100, 100, 300, 200)
        self.show()
        
    def dateChanged(self, date):
        # 날짜 변경 시 라벨 텍스트 업데이트
        self.label.setText("Selected Date: " + date.toString())
        # 날짜 유효성 검사
        if date.isValid():
            print("Valid date:", date.toString())
        else:
            print("Invalid date")

if __name__ == '__main__':
    # 애플리케이션 생성
    app = QApplication(sys.argv)
    # 데모 애플리케이션 인스턴스 생성
    ex = DateEditDemo()
    # 애플리케이션 실행
    sys.exit(app.exec_())

코드 설명

  • QDateEdit 위젯 생성 및 설정:
    • QDateEdit(self)로 위젯을 생성하고, setDate(QDate.currentDate())로 현재 날짜를 초기값으로 설정합니다.
    • setCalendarPopup(True)로 달력 팝업을 활성화합니다.
    • setMinimumDate(QDate(2000, 1, 1))와 setMaximumDate(QDate(2100, 12, 31))를 사용하여 선택 가능한 날짜 범위를 설정합니다.
    • setDisplayFormat('yyyy-MM-dd')로 날짜 형식을 설정합니다.
    • dateChanged 시그널을 dateChanged 슬롯에 연결하여, 사용자가 날짜를 변경할 때마다 선택된 날짜를 라벨에 표시합니다.
  • 이벤트 연결:
    • dateChanged 슬롯에서 날짜가 변경될 때 라벨의 텍스트를 업데이트하고, 날짜가 유효한지 확인합니다.
  • 레이아웃 설정:
    • QVBoxLayout을 사용하여 위젯을 수직으로 배치하고, QDateEdit과 QLabel을 레이아웃에 추가합니다.

이 소스 코드는 QDateEdit의 다양한 기능을 포함하고 있으며, PyQt5를 사용하여 날짜 선택 애플리케이션을 만드는 데 필요한 모든 것을 설명합니다.

728x90
반응형