Advertisement
Guest User

Untitled

a guest
Nov 13th, 2020 (edited)
1,027
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. import sys, math
  2. import PyQt5.QtCore as QtCore
  3. import PyQt5.QtWidgets as QtWidgets
  4. import PyQt5.QtGui as QtGui
  5.  
  6.  
  7. # ---------------------------------------------------------------------------------------------------------
  8. class clsFilePreviewModel(QtWidgets.QFileSystemModel):
  9. def __init__(self, cacheWidth=100, cacheHeight=100):
  10. super().__init__()
  11. self.previews = {'None': None}
  12. self.cacheWidth = cacheWidth
  13. self.cacheHeight = cacheHeight
  14. self.ncols = 2
  15.  
  16. #----------------------------------------------------------------------------
  17. def getPreview(self, index):
  18. itemName = super().data(index, QtCore.Qt.DisplayRole)
  19.  
  20. if itemName not in self.previews:
  21. qpm = QtGui.QPixmap(self.rootPath() + "/" + itemName)
  22.  
  23. if qpm is None or qpm.isNull():
  24. qpm = super().data(index, QtCore.Qt.DecorationRole)
  25. if qpm and not qpm.isNull():
  26. qpm = qpm.pixmap(self.cacheWidth, self.cacheHeight)
  27. if qpm and not qpm.isNull():
  28. qpm = qpm.scaled(self.cacheWidth, self.cacheHeight, QtCore.Qt.KeepAspectRatio)
  29.  
  30. self.previews[itemName] = qpm
  31. return self.previews[itemName]
  32.  
  33. # ----------------------------------------------------------------------------
  34. def data(self, index, role):
  35. if role == QtCore.Qt.DecorationRole:
  36. return self.getPreview(index)
  37. else:
  38. return super().data(index, role)
  39.  
  40. # ---------------------------------------------------------------------------------------------------------
  41. class clsIconsGrid(QtWidgets.QWidget):
  42. def __init__(self, dir_path):
  43. super().__init__()
  44.  
  45. self.gridSize = QtCore.QSize(200,200)
  46.  
  47. self.path = dir_path
  48. self.files = clsFilePreviewModel()
  49. self.files.setRootPath(self.path)
  50.  
  51. self.view = QtWidgets.QListView()
  52. self.view.setModel(self.files)
  53. self.view.setRootIndex(self.files.index(dir_path))
  54. self.view.setViewMode(QtWidgets.QListView.IconMode)
  55. self.view.setGridSize(self.gridSize)
  56.  
  57. layout = QtWidgets.QHBoxLayout()
  58. layout.addWidget(self.view)
  59. self.setLayout(layout)
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement