filewidget.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from PySide2 import QtCore, QtGui, QtWidgets
  2. from PySide2.QtWidgets import (QWidget, QLabel, QApplication,
  3. QHBoxLayout, QVBoxLayout, QFormLayout,QStyle )
  4. from PySide2.QtGui import QPixmap,QIcon,Qt
  5. class FileWidget(QWidget):
  6. icons = {
  7. "Folder": QStyle.SP_DirIcon,
  8. "File": QStyle.SP_FileIcon
  9. }
  10. def __init__(self, text, filetype, height=17):
  11. super().__init__()
  12. self.setFixedHeight(height)
  13. # self.setStyleSheet("*{border: 0.5px solid red}")
  14. self.text = text
  15. self.type = filetype
  16. self.icon = QLabel(self)
  17. self.icon.setFixedSize(height-2,height-2)
  18. self.fileName = QLabel(self)
  19. font = self.fileName.font()
  20. font.setPointSizeF(font.pointSizeF() - 0.5)
  21. self.fileName.setFont(font)
  22. self.setLayout(QFormLayout())
  23. self.layout().setMargin(0)
  24. # QFormLayout().setFormAlignment(Qt.AlignmentFlag.AlignTop)
  25. self.layout().setFormAlignment(Qt.AlignmentFlag.AlignTop)
  26. self.layout().setWidget(0, QtWidgets.QFormLayout.LabelRole, self.icon)
  27. self.layout().setWidget(0, QtWidgets.QFormLayout.FieldRole, self.fileName)
  28. self.set_icon()
  29. self.fileName.setText(text)
  30. def get_text(self):
  31. return self.text
  32. def set_icon(self):
  33. QStyle_SP_ICON = self.icons.get(self.type)
  34. if not QStyle_SP_ICON:
  35. # 在 file_list.py 中会有其它类型的文件,如:MP3,doc,video 等,图标默认只显示 File 即可
  36. QStyle_SP_ICON = self.icons.get("File")
  37. icon = QIcon(QApplication.style().standardIcon(QStyle_SP_ICON))
  38. m_pix = icon.pixmap(self.icon.size())
  39. self.icon.setPixmap(m_pix)
  40. self.icon.setScaledContents(True)
  41. if __name__ == "__main__":
  42. import sys
  43. app = QtWidgets.QApplication(sys.argv)
  44. Form = FileWidget("Sample Folder", "Folder")
  45. Form.show()
  46. sys.exit(app.exec_())