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 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!