티스토리 뷰
PyQt5에서 QListWidget
활용하기
PyQt5는 Python을 사용하여 데스크톱 애플리케이션을 개발할 수 있게 해주는 강력한 GUI 라이브러리입니다. 이 중 QListWidget
은 리스트 형태의 데이터를 표시하고 조작하는 데 유용한 위젯입니다. 이 글에서는 QListWidget
의 기본 사용법부터 고급 기능까지 자세히 살펴보겠습니다.
QListWidget 기본 개념
QListWidget
은 QListView
를 상속받아 구현된 위젯으로, 리스트 형태로 데이터를 표시합니다. 각 항목은 QListWidgetItem
객체로 관리되며, 사용자는 이를 통해 항목을 추가, 제거, 수정할 수 있습니다. 또한, 다양한 이벤트와 메서드를 제공하여 사용자와의 상호작용을 쉽게 처리할 수 있습니다.
기본 사용법
다음은 QListWidget
을 간단히 사용하는 예제입니다. 이 예제에서는 몇 가지 항목을 추가하고, 사용자가 항목을 클릭했을 때 메시지 박스를 표시합니다.
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QMessageBox
class ListWidgetDemo(QListWidget):
def onItemClicked(self, item):
QMessageBox.information(self, "항목 선택", "선택한 항목: " + item.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
demoListWidget = ListWidgetDemo()
demoListWidget.resize(300, 120)
demoListWidget.addItem("옵션 1")
demoListWidget.addItem("옵션 2")
demoListWidget.addItem("옵션 3")
demoListWidget.addItem("옵션 4")
demoListWidget.setWindowTitle('QListWidget 데모')
demoListWidget.itemClicked.connect(demoListWidget.onItemClicked)
demoListWidget.show()
sys.exit(app.exec_())
이 코드는 간단한 QListWidget
예제로, 리스트에 네 개의 항목을 추가하고 클릭 이벤트를 처리합니다.
주요 메서드 및 기능
addItem()
: 단일 항목을 추가합니다.addItems()
: 여러 항목을 한 번에 추가할 수 있습니다.insertItem()
: 특정 위치에 항목을 삽입합니다.clear()
: 모든 항목을 제거합니다.setCurrentItem()
: 현재 선택된 항목을 설정합니다.sortItems()
: 항목을 정렬하여 표시합니다.
이러한 메서드를 활용하면 리스트의 내용을 동적으로 관리할 수 있습니다.
이벤트 처리
QListWidget
은 다양한 이벤트를 제공합니다. 그 중 몇 가지 중요한 이벤트는 다음과 같습니다:
currentItemChanged
: 현재 선택된 항목이 변경될 때 발생합니다.itemClicked
: 사용자가 특정 항목을 클릭할 때 발생합니다.
이러한 이벤트를 활용하면 사용자와의 상호작용을 더욱 풍부하게 만들 수 있습니다.
드래그 앤 드롭 기능
드래그 앤 드롭은 사용자 인터페이스에서 매우 직관적인 기능입니다. QListWidget
은 이러한 드래그 앤 드롭 기능도 지원하여 두 개의 리스트 간에 아이템을 쉽게 옮길 수 있게 합니다. 다음 예제는 두 개의 QListWidget
간에 아이템을 드래그 앤 드롭하는 방법을 보여줍니다:
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QHBoxLayout, QWidget
class CustomDropList(QListWidget):
def __init__(self):
super(CustomDropList, self).__init__()
self.setAcceptDrops(True)
def handleDropEvent(self, dropEvent):
sourceList = dropEvent.source()
selectedItems = sourceList.selectedItems()
for item in selectedItems:
sourceList.takeItem(sourceList.indexFromItem(item).row())
self.addItem(item)
class DragDropDemo(QWidget):
def __init__(self):
super(DragDropDemo, self).__init__()
self.setWindowTitle('드래그 앤 드롭 QListWidget 데모')
layout = QHBoxLayout()
self.leftList = CustomDropList()
self.rightList = QListWidget()
initialItems = ['항목 A', '항목 B', '항목 C']
self.rightList.addItems(initialItems)
layout.addWidget(self.leftList)
layout.addWidget(self.rightList)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
demoWidget = DragDropDemo()
demoWidget.show()
sys.exit(app.exec_())
이 예제에서는 오른쪽 리스트에서 왼쪽 리스트로 아이템을 드래그하여 옮길 수 있습니다. 이를 통해 사용자 경험을 더욱 향상시킬 수 있습니다.
응용 프로그램에서의 활용
실제 응용 프로그램에서는 QListWidget
을 통해 다양한 형태의 데이터를 효과적으로 관리할 수 있습니다. 예를 들어 파일 탐색기에서 파일 목록을 표시하거나, 설정 메뉴에서 여러 옵션을 나열하는 데 사용할 수 있습니다. 또한 다중 선택 및 드래그 앤 드롭 기능은 복잡한 작업도 쉽게 처리할 수 있도록 도와줍니다.
결론적으로, QListWidget
은 PyQt5에서 매우 유용한 위젯으로 다양한 애플리케이션에서 활용될 수 있습니다. 기본적인 사용법부터 고급 기능까지 익히면 더욱 강력하고 직관적인 사용자 인터페이스를 개발할 수 있을 것입니다.