Jiwift

[Python/PyQt] QListWidget 리스트 위젯 / UI 알아보기 본문

다른 개발/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())

 

반응형