multiselectwidget.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import sys
  2. from PyQt4.QtCore import *
  3. from PyQt4.QtGui import *
  4. from ui_multiselectwidget import *
  5. class MultiSelectWidget(Ui_MultiSelectWidget, QWidget):
  6. def __init__(self, parent=None):
  7. super(MultiSelectWidget, self).__init__()
  8. self.setupUi(self);
  9. self.add_selected_button.clicked.connect(self.add_selected)
  10. self.add_all_button.clicked.connect(self.add_all)
  11. self.remove_selected_button.clicked.connect(self.remove_selected)
  12. self.remove_all_button.clicked.connect(self.remove_all)
  13. self.available_list.setSelectionMode(QAbstractItemView.ExtendedSelection)
  14. self.selected_list.setSelectionMode(QAbstractItemView.ExtendedSelection)
  15. def switch_selected(self, src, dst):
  16. selected = src.selectedItems()
  17. for s in selected:
  18. row = src.indexFromItem(s).row()
  19. item = src.takeItem(row)
  20. dst.addItem(item)
  21. dst.sortItems()
  22. def add_selected(self):
  23. self.switch_selected(self.available_list, self.selected_list)
  24. def remove_selected(self):
  25. self.switch_selected(self.selected_list, self.available_list)
  26. def move_all(self, src, dst):
  27. while src.count() > 0:
  28. item = src.takeItem(0)
  29. dst.addItem(item)
  30. dst.sortItems()
  31. def add_all(self):
  32. self.move_all(self.available_list, self.selected_list)
  33. def remove_all(self):
  34. self.move_all(self.selected_list, self.available_list)
  35. def clear(self):
  36. self.available_list.clear()
  37. self.selected_list.clear()
  38. if __name__ == "__main__":
  39. app = QtGui.QApplication(sys.argv)
  40. ui = MultiSelectWidget()
  41. ui.show()
  42. sys.exit(app.exec_())