다른 개발/Python
[Python/PyQt] QListWidget 리스트 위젯 / UI 알아보기
지위프트
2022. 12. 30. 00:46
반응형
리스트 위젯(Widget)과 뷰(View)가 있는데 위젯이 더 간편한 것 같다. 사용하는 방법은 같으나 편리함 정도 차이가 있다.
# 한번 클릭
self.[리스트위젯 이름].itemClicked.connect([기능])
# 더블 클릭
self.[리스트위젯 이름].itemDoubleClicked.connect([기능])
# 항목 변경
self.[리스트위젯 이름].currentItemChanged.connect([기능])
리스트 위젯 클릭 이벤트를 담당하는 메서드
# 선택된 리스트위젯 아이템 번호
self.[리스트위젯 이름].currentRow()
# 선택된 리스트위젯 객체 반환
self.[리스트위젯 이름].currentItem()
# row번째 리스트위젯 객체 반환
self.[리스트위젯 이름].item(row)
리스트 목록 정보를 가지고 오는 함수. 반환된 객체 뒤에 .text()를 하면 선택된 객체의 내용을 가지고 온다.
# 리스트위제위젯에 항목을 추가합니다.
self.[리스트위젯 이름].addItem(String)
# row번 자리에 항목을 추가합니다.
self.[리스트위젯 이름].insertItem(row, String)
# row번 자리 항목으로 가지고 옵니다.
self.[리스트위젯 이름].tatkeItem(row)
# 리스트위젯을 초기화합니다.
self.[리스트위젯 이름].clear()
리스트 위젯에 항목들을 컨트롤한다. 위 메서드를 사용해 다양한 구현이 가능하다.
예시
# 버튼을 통하여 기능들을 연결합니다.
self.pushButton.clicked.connect(self.add_item)
self.pushButton_2.clicked.connect(self.insert_item)
self.pushButton_3.clicked.connect(self.take_item)
self.pushButton_4.clicked.connect(self.clear)
self.pushButton_5.clicked.connect(self.item_row)
# 리스트위젯 클릭을 통하여 기능 연결
self.listWidget.itemClicked.connect(self.one_click)
self.listWidget.itemDoubleClicked.connect(self.double_click)
self.listWidget.currentItemChanged.connect(self.change_item)
def add_item(self):
self.listWidget.addItem(self.lineEdit.text())
def insert_item(self):
self.listWidget.insertItem(int(self.lineEdit_2.text()), self.lineEdit.text())
def take_item(self):
self.listWidget.takeItem(int(self.lineEdit_3.text()))
def clear(self):
self.listWidget.clear()
def item_row(self):
self.label_4.setText(self.listWidget.item(int(self.lineEdit_4.text())).text())
def one_click(self):
self.label_2.setText(str(self.listWidget.currentRow()))
self.label_3.setText(self.listWidget.currentItem().text())
def double_click(self):
self.label_5.setText(str(self.listWidget.currentRow()))
self.label_6.setText(self.listWidget.currentItem().text())
def change_item(self):
self.label_8.setText(str(self.listWidget.currentRow()))
self.label_9.setText(self.listWidget.currentItem().text())
반응형