728x90
반응형
QComboBox는 드롭다운 리스트를 제공하는 위젯으로, 사용자가 여러 옵션 중 하나를 선택할 수 있도록 합니다. 이번 포스팅에서는 PyQt5의 QComboBox 사용법과 다양한 옵션들을 살펴보겠습니다.
1. QComboBox 기본 사용법
설치
먼저 PyQt5를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.
기본 예제
QComboBox를 사용하는 기본 예제를 살펴보겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QLabel
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QComboBox Example')
self.resize(300, 200)
layout = QVBoxLayout()
self.combo = QComboBox()
self.combo.addItems(['Option 1', 'Option 2', 'Option 3'])
self.combo.currentIndexChanged.connect(self.selection_changed)
self.label = QLabel('Selected: Option 1')
layout.addWidget(self.combo)
layout.addWidget(self.label)
self.setLayout(layout)
def selection_changed(self, i):
self.label.setText(f'Selected: {self.combo.itemText(i)}')
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())
이 코드는 간단한 QComboBox 예제를 보여줍니다. 사용자가 옵션을 선택하면 QLabel에 선택된 옵션이 표시됩니다.
2. QComboBox 주요 기능
아이템 추가 및 제거
QComboBox에 아이템을 추가하거나 제거하는 방법입니다.
# 아이템 추가
self.combo.addItem('New Option')
self.combo.addItems(['Option 4', 'Option 5'])
# 아이템 제거
self.combo.removeItem(0) # 첫 번째 아이템 제거
현재 선택된 아이템 가져오기
current_text = self.combo.currentText()
current_index = self.combo.currentIndex()
아이템 삽입
특정 위치에 아이템을 삽입할 수 있습니다.
self.combo.insertItem(1, 'Inserted Option')
콤보박스 초기화
콤보박스의 모든 아이템을 제거할 수 있습니다.
self.combo.clear()
콤보박스 비활성화 및 활성화
self.combo.setEnabled(False) # 비활성화
self.combo.setEnabled(True) # 활성화
3. QComboBox 고급 옵션
Editable QComboBox
사용자가 직접 텍스트를 입력할 수 있도록 하려면 setEditable(True) 메서드를 사용합니다.
self.combo.setEditable(True)
콤보박스 스타일 설정
스타일을 변경하여 콤보박스의 외관을 커스터마이징할 수 있습니다.
self.combo.setStyleSheet("QComboBox { background-color: yellow; }")
콤보박스 신호와 슬롯
QComboBox는 다양한 신호(signal)를 제공합니다. 예를 들어, 사용자가 선택을 변경할 때 발생하는 currentIndexChanged 신호를 사용할 수 있습니다.
self.combo.currentIndexChanged.connect(self.on_combobox_changed)
def on_combobox_changed(self, index):
print(f'Selected Index: {index}, Text: {self.combo.itemText(index)}')
4. 전체 코드 예제
다양한 기능을 포함한 전체 예제 코드는 다음과 같습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QLabel, QPushButton
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QComboBox Advanced Example')
self.resize(300, 200)
layout = QVBoxLayout()
self.combo = QComboBox()
self.combo.addItems(['Option 1', 'Option 2', 'Option 3'])
self.combo.setEditable(True)
self.combo.currentIndexChanged.connect(self.selection_changed)
self.combo.setStyleSheet("QComboBox { background-color: yellow; }")
self.label = QLabel('Selected: Option 1')
self.add_button = QPushButton('Add Item')
self.add_button.clicked.connect(self.add_item)
self.remove_button = QPushButton('Remove Item')
self.remove_button.clicked.connect(self.remove_item)
layout.addWidget(self.combo)
layout.addWidget(self.label)
layout.addWidget(self.add_button)
layout.addWidget(self.remove_button)
self.setLayout(layout)
def selection_changed(self, i):
self.label.setText(f'Selected: {self.combo.itemText(i)}')
def add_item(self):
self.combo.addItem('New Option')
def remove_item(self):
if self.combo.count() > 0:
self.combo.removeItem(self.combo.currentIndex())
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())
위 예제는 QComboBox의 다양한 기능을 포함하고 있으며, 사용자 인터페이스에 대한 기본적인 이해를 돕습니다. 이를 통해 PyQt5를 사용한 GUI 애플리케이션 개발에 더욱 익숙해질 수 있을 것입니다.
728x90
반응형
'프로그래밍 > python' 카테고리의 다른 글
PyQt5 QProgressBar의 속성과 사용법 (0) | 2024.05.22 |
---|---|
PyQt5 QLineEdit: 모든 속성과 사용법 (0) | 2024.05.21 |
PyQt5 QRadioButton: 메서드와 자세한 사용법 (0) | 2024.05.18 |
PyQt5이용 QCheckBox 사용하기 (0) | 2024.05.14 |
PyQt5 QLabel 사용하기 (0) | 2024.05.12 |