반응형

이미지와 텍스트를 리스트뷰 형태로 보여주는 간단한 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 

 

https://stackoverflow.com/questions/14114737/which-qt-widget-to-use-for-implementing-image-thumbnail-browser-displaying-tile 



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts