일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- office
- Windows11
- Windows10
- 파이썬3
- pyqt5
- Outlook
- 윈도우11
- python
- python3
- Android
- matlab
- win32com
- pythongui
- 파워포인트
- 안드로이드
- 비주얼베이직
- VBA
- 파이썬GUI
- pandas
- windows
- 엑셀
- 파이썬
- 윈도우10
- 오피스
- 문자열
- git
- 깃
- html
- 아웃룩
- Excel
Appia의 IT세상
파이썬[Python GUI, PyQt5 Tutorial 010]콤보 박스(QComboBox)만들기 본문
파이썬[Python GUI, PyQt5 Tutorial 010]콤보 박스(QComboBox)만들기
Appia 2020. 6. 23. 07:27파이썬[Python GUI, PyQt5 Tutorial 010]콤보박스(QComboBox)만들기
이번 포스팅은 콤보 박스(QComboBox)에 대해서 생성하는 방법에 대해서 살펴보고자 합니다. 콤보 박스(QComboBox)의 경우, 흔히 특정 정해진 아이템중에서 한개를 선택할 때 가장 많이 사용합니다. 그럼 간단히 다음과 같은 그림의 아이콘을 많이 보실 것입니다.
먼저 그럼 간단히 다음과 같은 콤보 박스를 구성하는 방법에 대해서 코드로 한번 살펴보겠습니다.
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox class QtGUI(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QComboBox Example") self.resize(150, 150) self.Label = QLabel('QComboBox Text',self) self.Label.move(10, 50 ) # QCombox 생성 및 아이템 추가 QCB = QComboBox(self) QCB.addItem('0') QCB.addItem('1') QCB.addItem('2') QCB.addItem('3') QCB.addItem('4') QCB.addItem('5') QCB.activated[str].connect(lambda :self.selectedComboItem(QCB)) QCB.move(50,20) self.show() def selectedComboItem(self,text): print(text.currentText()) self.Label.setText(text.currentText()) if __name__ == '__main__': app = QApplication(sys.argv) ex = QtGUI() app.exec_() | cs |
전체 코드를 보면 위와 같습니다. 위의 GUI는 간단히 콤보 박스(QComboBox)에서 선택한 아이템을 앞서서 포스팅했던 라벨에 표시하는 간단한 형태로 한번 작성해봤습니다. 그럼 세부적으로 각 부분에 대해서 한번 살펴보겠습니다.
# QCombox 생성 및 아이템 추가 QCB = QComboBox(self) QCB.addItem('0') QCB.addItem('1') QCB.addItem('2') QCB.addItem('3') QCB.addItem('4') QCB.addItem('5') QCB.activated[str].connect(lambda :self.selectedComboItem(QCB)) QCB.move(50,20) | cs |
위의 부분을 보면 QComboBox()로 QComboBox를 생성할 수 있습니다. 여기에 addItem("Text")를 통해서 원하고자 하는 텍스트를 바탕으로 콤보박스 아이템을 추가해줍니다.
그리고, 콤보박스에서 아이템을 선택할 때, 이루어지는 이벤트를 연결하는 부분을 작성해주는 형태입니다. 이벤트는 다음과 같습니다.
def selectedComboItem(self,text): print(text.currentText()) self.Label.setText(text.currentText()) | cs |
먼저, 출력하는 print문을 제외하고, 받아온 text라는 콤보박스의 현재 아이템을 라벨엘 출력해주게 코드를 작성하였습니다. 이렇게 작성하면 매우 간단하게 콤보 박스를 작성할 수 있습니다.
그럼 앞서 로또 번호 생성기에 응용을 한번 해볼까 합니다. 먼저 숫자를 선택하여 그 숫자만큼 숫자들을 선택할 수 있게 하는 콤보(QComboBox)를 추가하도록 하겠습니다. 이전 코드에 몇가지 부분을 추가할 것입니다.
def select_limit(self,QCB): self.refresh_but() self.limit = int(QCB.currentText()) | cs |
앞서서 하는 부분과 같이 다음과 같이 콤보박스에서 현재의 텍스트를 선택하여 한계치로 잡아둘 것입니다. 이 부분을 통해서 숫자를 선택할 수 있는 부분들에 제약을 둘 것입니다.
self.limit = 0 label3 = QLabel("selected : ", self) label3.move(240, 355) QCB = QComboBox(self) QCB.addItem("0") QCB.addItem("1") QCB.addItem("2") QCB.addItem("3") QCB.addItem("4") QCB.addItem("5") QCB.move(300, 350) QCB.activated[str].connect(lambda: self.select_limit(QCB)) | cs |
위와 같이 콤보박스를 추가해졌고, self.limit이라는 숫자를 선택할 수 있는 숫자를 콤보박스를 통해 선택하게 하였습니다. 그리고 위의 코드를 바탕으로 다음 코드또한 변경이 이루어져야 합니다.
def inputnum(self,button): if len(self.selected_num) < self.limit: self.selected_num.append(int(button.text())) button.setEnabled(False) | cs |
위에서 보이는 함수는 바로 숫자를 입력하는 부분인데 self.limit에 지정된 숫자만큼만 버튼을 선택할 수 있게 합니다.
이런 부분들이 이전에 포스팅한 코드와는 조금 차이가 있습니다. 그런 전체 코드를 실행하면 다음과 같은 화면이 나타납니다.
selected에서 숫자를 바꿀 때마다 refresh 되게 코드를 구성하였습니다. 전체 코드는 다음 첨부 드린 파일을 참조하시길 바랍니다.
이와 같이 응용을 해봤습니다. 이전 포스팅과 함께 보면 조금 더 도움이 될 것 같습니다.
파이썬[Python GUI, PyQt5 Tutorial 009]버튼(QPushButton), 라벨(QLabel)을 이용한 특정 번호 포함된 로또 번호 생성기
오늘은 파이썬[Python GUI, PyQt5 Tutorial 010]콤보 박스(QComboBox)만들기라는 주제로 포스팅을 해봤습니다. 그러면서 저번에 작업했떤 로또 번호 생성기를 조금 업데이트 해봤습니다. 혹시 궁금하신 점이 있으시면 언제든지 댓글 및 방명록에 글남겨주시길 바랍니다. 감사합니다.