Вы должны установить делегата в представлении, также я потратил время, чтобы немного улучшить ваш код:
from PyQt5 import QtCore, QtWidgets
class WindowGUI(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__()
self.initUI()
def initUI(self):
self.teacherSelect = TeacherSelect()
self.setCentralWidget(self.teacherSelect)
class TeacherSelect(QtWidgets.QComboBox):
def __init__(self, parent=None):
super().__init__(parent)
self.initModel()
self.addTeachers()
# get parent with self.parent() or self.parentWidget()
def initModel(self):
self.number = 1
self.selecteds = []
self.teacherDataWids = []
self.view().pressed.connect(self.select)
delegate = QtWidgets.QStyledItemDelegate(self.view()) # <--
self.view().setItemDelegate(delegate) # <--
def addTeachers(self):
source = {"id1" : "a", "id2" : "b"}
for i, (k, v) in enumerate(source.items()):
self.addItem(v)
it = self.model().item(i)
it.setData(k)
it.setCheckable(True)
it.setCheckState(QtCore.Qt.Unchecked)
def select(self, index):
pass
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
combo = WindowGUI()
combo.resize(100, 40)
combo.show()
sys.exit(app.exec_())