안녕하세요. Crazy M2M입니다.
오늘은 Date Edit를 사용해서 날짜 입력받는 방법에 대해서 알아보도록 하겠습니다.
사용자로부터 다양한 입력을 받는 경우 중에 하나가 날짜를 입력받고 싶을 때가 있습니다. 이럴 때 적합한 위젯입니다.
그럼 바로 알아보도록 할게요^^
왼쪽 위젯에서 Date Edit를 드래그해서 GUI 작업창에 배치를 하도록 합니다. 객체명은 dateEdit로 정상적으로 생성되는 것을 확인했습니다.
다음은 Push Button 이벤트를 이용해서 입력된 날짜를 입력받도록 할게요.
Push Button을 드래그해서 배치합니다.
오른쪽 속성창에서 text 옵션을 "입력"으로 바꿔 주도록 할게요.
입력받은 날짜를 표시하기 위해서 이번엔 Label을 사용해 보도록 할게요.
왼쪽에서 Label 위젯을 드래그해서 배치하고 크기도 적당히 잘 보이도록 크기를 조정해 주세요.
날짜가 아직 입력되지 않았으니 오른쪽 text 속성을 지워주세요. ^^
이제 GUI 구성이 완료되었으니 "a.ui"로 저장해 주세요 ^^
Date Edit를 이용해서 날짜를 입력하고 Push Button을 클릭하면 입력한 날짜가 Label에 표시하는 동작을 구현해 볼게요.
전체 코드는 아래와 같습니다.
차근차근 코드를 분석해 보겠습니다. ^^
from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
import sys
class My_Win:
def __init__(self):
self.dlg = loadUi("a.ui")
self.dlg.pushButton.clicked.connect(self.btn_clicked)
self.dlg.show()
def btn_clicked(self):
date = self.dlg.dateEdit.date()
year = date.year()
month = date.month()
day = date.day()
txt = str(year) + "년도" + str(month) + "월" + str(day) + "일 입니다."
self.dlg.label.setText(txt)
app = QApplication( sys.argv)
my_win = My_Win()
app.exec()
코드 설명에 앞서 먼저 실행을 시켜 보겠습니다.
F5를 누르니 GUI 폼이 나타납니다. ^^
년/월/일이 보이는데 연도를 클릭하고 화살표를 눌러 날짜를 변경해 주세요.
월/일도 동일하게 클릭하고 나서 내용을 변경해 주세요.
날짜를 2023-05-05로 설정했습니다.
5월 5일은 어린이날!!!
이제 입력 버튼을 클릭하면 ~~~
짜잔!!!
Label에 2023년 5월 5일이 출력되는 것을 확인할 수 있어요.
생각보다 잘 동작하네요. ㅋㅋㅋ
이제 코드를 좀 분석해 보도록 할게요.
My_Win 클래스 객체 생성자 함수입니다.
GUI 객체를 생성하기 위해서 "a.ui"를 로드해서 self.dlg로 할당합니다.
Push Button Clicked 이벤트를 이용해서 핸들러 함수를 등록합니다.
이제 GUI를 실행시킵니다.
def __init__(self):
self.dlg = loadUi("a.ui")
self.dlg.pushButton.clicked.connect(self.btn_clicked)
self.dlg.show()
이벤트 핸들러 함수입니다.
먼저 Date Edit의 설정된 날짜는 QDate 객체로 리턴되는데 date 변수에 할당합니다.
Qdate객체의 메서드는 year(), month(), day()가 있는데
각각 함수를 통해서 년/월/일의 정보를 읽어 들여, year, month, day 변수에 저장합니다.
이제 텍스트로 적당히 구성해서 문자열로 만들어 줍니다.
year(), month(), day()는 모두 int 형으로 리턴을 하기 때문에
텍스트로 만들기 위해서는 str() 함수를 사용해서 문자열로 만들어 줍니다.
마지막을 Labe의 setText() 함수를 통해서 Label의 내용을 설정합니다.
휴~~~ 참 쉽조잉 ^^
def btn_clicked(self):
date = self.dlg.dateEdit.date()
year = date.year()
month = date.month()
day = date.day()
txt = str(year) + "년도" + str(month) + "월" + str(day) + "일 입니다."
self.dlg.label.setText(txt)
근데 날짜 위젯이 좀 허접한 거 같은데....
Date Edit 위젯의 속성창에 CalendarPopup 속성을 체크하면
날짜 형태로 입력이 가능합니다.
날짜 선택하는 게 좀 더 개선이 되었네요. ㅎㅎㅎ
적당히 쓸만한 거 같네요.^^
이것으로 Date Edit를 사용해서 날짜 입력받는 방법에 대해서 알아보았습니다.
그럼 오늘도 칼퇴근!!!
'Python' 카테고리의 다른 글
[PyQt5] 텍스트 입력 받기 ( Line Edit 사용 ) (0) | 2023.04.03 |
---|---|
[VSCode] Python 자동 완성 설정 방법 (0) | 2023.04.02 |
[PyQt5] Spin Box 이벤트 발생 시키기( textChanged Event ) (0) | 2023.04.02 |
[PyQt5] Push Button 이벤트 발생 시키기( Clicked Event ) (0) | 2023.04.02 |
[PyQt5] Hello World 실행 방법 (Designer GUI 실행 방법) (0) | 2023.04.02 |