How do I display images in QListView of size of standard thumbnail size like 250 x 200 , and file nametext should wrap to next line , right now the images displayed are very small and are not positioned under each other in proper row column order.

import sys
import os

from PyQt4 import QtGui, QtCore

class MyListModel(QtCore.QAbstractListModel): 
    def __init__(self, datain, parent=None, *args): 
        """ datain: a list where each item is a row
        """
        QtCore.QAbstractListModel.__init__(self, parent, *args) 
        self.listdata = datain

    def rowCount(self, parent=QtCore.QModelIndex()): 
        return len(self.listdata) 

    def data(self, index, role):
        if index.isValid() and role == QtCore.Qt.DecorationRole:
            return QtGui.QIcon(QtGui.QPixmap(self.listdata[index.row()]))
        if index.isValid() and role == QtCore.Qt.DisplayRole:
            return QtCore.QVariant(os.path.splitext(os.path.split(self.listdata[index.row()])[-1])[0])
        else: 
            return QtCore.QVariant()

class MyListView(QtGui.QListView):
    """docstring for MyListView"""
    def __init__(self):
        super(MyListView, self).__init__()
        # show in Icon Mode
        self.setViewMode(QtGui.QListView.IconMode)
        crntDir = "/Users/sanjeevkumar/Pictures/tempting"
        # create table
        list_data = []
        philes = os.listdir(crntDir)
        for phile in philes:
            if phile.endswith(".png") or phile.endswith("jpg"):
                list_data.append(os.path.join(crntDir, phile))
        lm = MyListModel(list_data, self)
        self.setModel(lm)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window =  MyListView()
    window.show()
    window.raise_()
    sys.exit(app.exec_())

try this :

def data(self, index, role):
        if index.isValid() and role == QtCore.Qt.DecorationRole:
            s = QtCore.QSize(250, 200)
            pict = QtGui.QIcon(QtGui.QPixmap(self.listdata[index.row()]).scaled(s))
            return pict

I tried it but didnt work :(

    def data(self, index, role):
        if index.isValid() and role == QtCore.Qt.DecorationRole:
            s = QtCore.QSize(250, 200)
            return QtGui.QIcon(QtGui.QPixmap(self.listdata[index.row()]).scaled(s))
        if index.isValid() and role == QtCore.Qt.DisplayRole:
            return QtCore.QVariant(os.path.splitext(os.path.split(self.listdata[index.row()])[-1])[0])
        else: 
            return QtCore.QVariant()
This article has been dead for over six months. Start a new discussion instead.