본문 바로가기
프로그래밍/python

PyQt5 QDateEdit 위젯 사용법

by 마루의 일상 2024. 6. 2.
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
반응형