PyQt5 예제 - QListWidgetQt/PyQt5 강좌2023. 10. 22. 05:39
Table of Contents
반응형
이미지와 텍스트를 리스트뷰 형태로 보여주는 간단한 QListWidget 예제 입니다.
2022. 8. 16 최초작성
실행하면 리스트뷰의 한 줄당 이미지와 텍스트가 보입니다.
전체 소스코드입니다.
from PyQt5 import QtWidgets from PyQt5 import QtGui from PyQt5 import QtCore import sys def get_item_widget(image, text): widget = QtWidgets.QWidget() horizontal_layout = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel() label.setFixedSize(200, 200) pixmap = QtGui.QPixmap(image).scaled(200, 200) label.setPixmap(pixmap) horizontal_layout.addWidget(label) label_text = QtWidgets.QLabel(text) horizontal_layout.addWidget(label_text) widget.setLayout(horizontal_layout) return widget class MyDialog(QtWidgets.QDialog): def __init__(self, parent=None): super().__init__(parent) self.resize(400,550) vertical_layout = QtWidgets.QVBoxLayout() listWidget = QtWidgets.QListWidget() vertical_layout.addWidget(listWidget) listWidget.setViewMode(QtWidgets.QListWidget.IconMode) # 주석처리하면 아이템 선택이 가능해집니다. # listWidget.setResizeMode(QtWidgets.QListWidget.Adjust) # 주석처리를 풀어주면 윈도우 너비를 크게 조정할 경우 오른쪽으로 아이템이 이동합니다. item1 = QtWidgets.QListWidgetItem() item1.setSizeHint(QtCore.QSize(300, 200)) # 이미지보다 크게 크기를 지정해줘야 이미지가 제대로 보입니다. widget1 = get_item_widget('earth.png', 'earth1\ntest') listWidget.addItem(item1) listWidget.setItemWidget(item1,widget1) item2 = QtWidgets.QListWidgetItem() item2.setSizeHint(QtCore.QSize(300, 200)) widget2 = get_item_widget('earth.png', 'earth2') listWidget.addItem(item2) listWidget.setItemWidget(item2,widget2) item3 = QtWidgets.QListWidgetItem() item3.setSizeHint(QtCore.QSize(300, 200)) widget3 = get_item_widget('earth.png', 'earth2') listWidget.addItem(item3) listWidget.setItemWidget(item3,widget3) self.setLayout(vertical_layout) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) dlg = MyDialog() dlg.show() app.exec_() |
참고
https://intrepidgeeks.com/tutorial/user-defined-item-action-in-pyqt-5-qlistwidget
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
QApplication의 인스턴스를 생성할 때 sys.argv를 전달해야 하는 이유 (0) | 2023.10.22 |
---|---|
PyQt5 예제 - QTreeView으로 json 로드하기 및 저장하기 (0) | 2023.10.22 |
PyQt5 예제 - connect에서 slot 함수에 아규먼트 전달하기 (0) | 2023.10.22 |
PyQt5 예제 - QStackedWidget (0) | 2023.10.22 |
PyQt5 예제 - QProgressDialog (0) | 2023.10.22 |