Profile picture

[Python / GUI] 간단한 동적 UI 구현 (QComboBox.currentIndexChanged)

JaehyoJJAng2024년 09월 10일

개요

QComboBoxQLineEdit을 사용하여 간단한 동적 UI를 구현해보려고 한다.


코드 구현

2024-09-10

QComboBoxcurrentIndexChanged 시그널을 사용하여 선택된 항목에 따라 QLineEdithide()show() 메소드를 호출해본다.


from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QComboBox, QLineEdit, QWidget

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QComboBox와 QLineEdit 예제")

        # 메인 위젯 및 레이아웃 설정
        main_widget = QWidget()
        self.setCentralWidget(main_widget)
        layout = QVBoxLayout(main_widget)

        # QComboBox 생성 및 항목 추가
        self.combo_box = QComboBox()
        self.combo_box.addItems(["카테고리 1", "카테고리 2", "카테고리 3"])
        layout.addWidget(self.combo_box)

        # QLineEdit 생성 (초기에는 숨김 상태)
        self.line_edit = QLineEdit()
        self.line_edit.setPlaceholderText("입력하세요")
        self.line_edit.hide()  # 숨김 처리
        layout.addWidget(self.line_edit)

        # 시그널 연결
        self.combo_box.currentIndexChanged.connect(self.update_visibility)

    def update_visibility(self, index):
        # 특정 카테고리 선택 시 QLineEdit 보이기/숨기기
        if self.combo_box.currentText() == "카테고리 2":
            self.line_edit.show()
        else:
            self.line_edit.hide()

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

Loading script...