addItem(icon, text, userData=None)
icon, userData는 생략 가능
ex) cbox = QComboBox()
cbox.addItem("서울특별시")
insertItem(index, icon, text, userData=None)
currentIndex(): 현재 선택된 아이템의 인덱스 반환
currentText(): 현재 선택된 아이템의 텍스트 반환
currentData(): 현재 선택된 아이템의 데이터 반환
setCurrentIndex(숫자): 해당 숫자의 인덱스로 변경
setCurrentText("경기도")
전체 삭제: clear()
한개 삭제: removeItem(해당 인덱스)
count(): 해당 콤보박스의 아이템 전체 갯수 반환.
currentIndexChanged.connect(func): 콤보박스의 변경 있을 시 해당 함수 실행
import sys
import os
from PySide6 import QtUiTools, QtGui
from PySide6.QtWidgets import QApplication, QMainWindow
# combobox는 따로 임포트 할 필요없다.
loader = QtUiTools.QUiLoader()
class MainView(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
global UI_MAIN
UI_MAIN = loader.load(resource_path("combobox.ui"))
getCnt()
UI_MAIN.cb_area.currentIndexChanged.connect(getComboBox)
UI_MAIN.btn_input.clicked.connect(inputComboBox)
UI_MAIN.btn_del.clicked.connect(deleteComboBox)
UI_MAIN.btn_clear.clicked.connect(clearComboBox)
UI_MAIN.btn_all.clicked.connect(getAll)
self.setCentralWidget(UI_MAIN)
self.setWindowTitle("QComboBox")
self.setWindowIcon(QtGui.QPixmap(resource_path("ani.jpg")))
self.resize(600, 500)
self.show()
# 콤보박스 이벤트 발생시
def getComboBox():
# if UI_MAIN.te_result.toPlainText():
# UI_MAIN.te_result.clear()
idx = UI_MAIN.cb_area.currentIndex()
text = UI_MAIN.cb_area.currentText()
data = UI_MAIN.cb_area.currentData()
UI_MAIN.te_result.append(str(idx) + " " + text + " " + str(data))
# 입력하기
def inputComboBox():
text = UI_MAIN.le_txt.text()
data = UI_MAIN.le_data.text()
UI_MAIN.cb_area.addItem(text, data)
getCnt()
# 선택삭제
def deleteComboBox():
idx = UI_MAIN.cb_area.currentIndex()
UI_MAIN.cb_area.removeItem(idx)
getCnt()
getAll()
# 전체 삭제
def clearComboBox():
UI_MAIN.cb_area.clear()
getCnt()
getAll()
# 전체보기
def getAll():
UI_MAIN.te_result.clear()
cnt = UI_MAIN.cb_area.count()
# 현재 선택된 콤보박스의 인덱스가 첫번째인 경우
if UI_MAIN.cb_area.currentIndex() == 0:
idx = UI_MAIN.cb_area.currentIndex()
text = UI_MAIN.cb_area.currentText()
data = UI_MAIN.cb_area.currentData()
UI_MAIN.te_result.append(str(idx) + " " + text + " " + str(data))
for i in range(cnt):
UI_MAIN.cb_area.setCurrentIndex(i)
# getComboBox()
# 콤보박스 아이템 전체 갯수
def getCnt():
cnt = UI_MAIN.cb_area.count()
UI_MAIN.le_cnt.setText(str(cnt))
# 파일경로
# pyinstaller로 원파일로 압축할때 경로 필요함
def resource_path(rel_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, rel_path)
return os.path.join(os.path.abspath("."), rel_path)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainView()
# main.show()
sys.exit(app.exec())