unique_label_qlist_widget.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # -*- encoding: utf-8 -*-
  2. from qtpy.QtCore import Qt
  3. from qtpy import QtWidgets
  4. from .escapable_qlist_widget import EscapableQListWidget
  5. class UniqueLabelQListWidget(EscapableQListWidget):
  6. def mousePressEvent(self, event):
  7. super(UniqueLabelQListWidget, self).mousePressEvent(event)
  8. if not self.indexAt(event.pos()).isValid():
  9. self.clearSelection()
  10. def findItemsByLabel(self, label):
  11. items = []
  12. for row in range(self.count()):
  13. item = self.item(row)
  14. if item.data(Qt.UserRole) == label:
  15. items.append(item)
  16. return items
  17. def createItemFromLabel(self, label):
  18. item = QtWidgets.QListWidgetItem()
  19. item.setData(Qt.UserRole, label)
  20. return item
  21. def setItemLabel(self, item, label, color=None):
  22. qlabel = QtWidgets.QLabel()
  23. if color is None:
  24. qlabel.setText('{}'.format(label))
  25. else:
  26. qlabel.setText(
  27. '{} <font color="#{:02x}{:02x}{:02x}">●</font>'
  28. .format(label, *color)
  29. )
  30. qlabel.setAlignment(Qt.AlignBottom)
  31. item.setSizeHint(qlabel.sizeHint())
  32. self.setItemWidget(item, qlabel)