PyQt5을 이용한 Python 코딩 ‘분석툴개발'(07)

우리가 최종적으로 만들 것은 전화번호를 분석하는 프로그램을 만드려고 한다. 그래서 두 사람의 전화번호를 입력받아서 비교하여 연관성이 있는지를 확인하기 위해서이다

그래서 파일오픈에 기간설정 기능을 추가하기 위해서 아래와 같은 코딩을 했다

TelAnalyzer_OPEN.py

...
  def __init__(self, parent=None):
    ...
    # 검색시작 날짜를 설정하는 컨트럴
    startDateLabel = QLabel("시작날짜")
    self.startDateEdit = QDateEdit()
    self.startDateEdit.setFixedWidth(100)
    self.startDateEdit.setDateTime(QDateTime.currentDateTime())
    self.startDateEdit.setMaximumDate(QDate(2300, 12, 31))
    self.startDateEdit.setMaximumTime(QTime(23, 59, 59))
    self.startDateEdit.setCalendarPopup(True)
    self.startDateEdit.setEnabled(False)
    startDateLabel.setBuddy(self.startDateEidt)

위 코드 설명을 하면 QLabel 에 “시작날짜” 입력

.setFixedWidth(100) : 넓이는 100으로 서렁

.setDateTime(QDateTime.currentDateTime()) : 날짜를 현재의 날짜로 설정

.setMaximumDate(QDate(2300, 12, 31)) : 2300년 12월31일을 한계로 설정

.setMaximumTime(QTime(23, 59, 59)) : 시간이 나오면 24시간으로 설정

.setCalendarPopup : 팝업으로 날짜를 설정

.setEnabled : 활성화 비활성화 결과는 True 했을때 결과

.setBuddy : QLabel과 QDateEdit 를 합치는 설정

    ...
    # 검색종료 날짜를 설정하는 컨트롤
    endDateLabel = QLabel("종료날짜")
    self.endDateEdit = QDateEdit()
    self.endDateEdit.setFixedWidth(100)
    self.endDateEdit.setDateTime(QDateTime.currentDateTime())
    self.endDateEdit.setMaximumDate(QDate(2300, 12, 31))
    self.endDateEdit.setMaximumTime(QTime(23, 59, 59))
    self.endDateEdit.setCalendarPopup(True)
    self.endDateEdit.setEnabled(False)
    endDateLabel.setBuddy(self.endDateEdit)

검색기간의 마지막 설정을 하는 부분 입니다

이제 콤보박스를 한번 만들어보겠다

    ...
    expireDateLabel = QLabel("기간설정")
    self.expireDateComboBox = QComboBox()
    self.expireDateComboBox.setFixedWidth(100)
    self.expireDateComboBox.addItem("선택안됨")
    self.expireDateComboBox.addItem("사용자지정")
    self.expireDateComboBox.addItem("일주일 전")
    self.expireDateComboBox.addItem("한달 전")
    self.expireDateComboBox.addItem("일년 전")
    self.expireDateComboBox.currentIndexChanged.connect(
                                           self.expireComboBoxChange)
    expireDateLabel.setBuddoy(self.expireDateComboBox)

QLabel, QComboBox 를 함께 합쳐서 만드는 부분이다

.addItem : 콤보박스 아이템을 추가하는 부분

.currentIndexChanged.connect(함수) : index를 변경할때 함수를 호출하는 부분 이때 함수를 꼭 정의해야된다.

이제 버튼을 설정해보자

    ...
    # 검색 버튼을 설정하는 부분
    self.expireDateButton = QPushButton('검색', self)
    self.expireDateButton.setFixedWidth(70)
    self.expireDateButton.clicked.connect(self.expiresearchButton)

버튼 또한 이벤트를 발생하기 위해서 connect를 사용하여 함수에 연결시켜준다

이제 4개 코딩한 부분을 합쳐서 표시해보겠다

    ...
    # 검색 그룹 종합하여 묶어주는 부분
    groupDate = QGroupBox("검색기간설정")
    groupBoxLayout = QGridLayout()
    groupBoxLayout.addWidget(startDateLabel, 0, 0)
    groupBoxLayout.addWidget(self.startDateEdit, 0, 1)
    groupBoxLayout.addWidget(endDateLabel, 0, 2)
    groupBoxLayout.addWidget(self.endDateEdit, 0, 3)
    groupBoxLayout.addWidget(expireDateLabel, 0, 4)
    groupBoxLayout.addWidget(self.expireDateComboBox, 0, 5)
    groupBoxLayout.addWidget(self.expireDateButton, 0 , 6)
    groupDate.setLayout(groupBoxLayout)

.addWidget 에서 위치를

[0 , 0] [0 , 1] [0 , 2] [0 , 3] [0 , 4] [0 , 5] [0 , 6]

이런식으로 나열하게 된다.

    ...
    layout = QGridLayout()
    layout.addWidget(groupDate, 0, 0)
    
    self.setLayout(layout)
  
  def expireComboBoxChange(self):
    super().parent().debuglog("> Debug > expireComboChange!!")

  def expiresearchButton(self):
    super().parent().debuglog("> Debug > expiresearchButton!!")

connect 와 연결된 함수를 전부 작성을 해줘야지 에러가 발생하지 않는다.

자 이제 실행해보자

자 그럼 다음 시간에 보자

댓글 남기기