unique_label_qlist_widget.py 1005 B

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