def __init__(self, parent, *args, **kw): super(SvcParameterWidget, self).__init__(parent=parent, *args, **kw) vbox = QtWidgets.QVBoxLayout(self) vbox.setContentsMargins(2, 2, 2, 2) vbox.setSpacing(2) frame = QtWidgets.QToolBar("SVC", self) frame.setIconSize(QtCore.QSize(16, 16)) self.treeview = TreeView(parent, self) model = AtMultiClassSvmItemModel(self.treeview) model.classesChanged.connect(parent.updateClassifier) self.treeview.setModel(model) self.treeview.setColumnWidth(0, 75) self.treeview.setColumnWidth(1, 75) self.treeview.setColumnWidth(2, 30) self.addClassBtn = QtWidgets.QToolButton() self.addClassBtn.setToolTip("Add new class") self.addClassBtn.setIcon(QtGui.QIcon(":/add-class.png")) self.addClassBtn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.addClassBtn.pressed.connect(self.onAddBtn) self.removeClassBtn = QtWidgets.QToolButton() self.removeClassBtn.setToolTip("Delete selected class") self.removeClassBtn.setIcon(QtGui.QIcon(":/remove-class.png")) self.removeClassBtn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.removeClassBtn.pressed.connect(self.onRemoveBtn) self.removeClassBtn.pressed.connect(parent.predictionInvalid) # disable the sanity check whether a sample is already reassign to # an other class self.allowReassign = QtWidgets.QCheckBox("allow reassign") self.allowReassign.stateChanged.connect(model.allowReassign) model.allowReassign(self.allowReassign.isChecked()) self.crossValidBtn = QtWidgets.QToolButton() self.crossValidBtn.setToolTip("Cross-validation Dialog") self.crossValidBtn.setIcon(QtGui.QIcon(":grid-search.png")) self.crossValidBtn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.crossValidBtn.clicked.connect(parent.validateClassifier) frame.addWidget(self.addClassBtn) frame.addWidget(self.removeClassBtn) frame.addWidget(self.crossValidBtn) frame.addWidget(self.allowReassign) self.treeview.activated.connect(parent.onActivated) self.treeview.setItemDelegateForColumn(1, ColorDelegate(self.treeview)) self.treeview.setItemDelegateForColumn(2, ButtonDelegate(self.treeview)) self.treeview.setSelectionMode(self.treeview.ContiguousSelection) for row in range(model.rowCount()): self.treeview.openPersistentEditor( model.index(row, model.ButtonColumn)) model.layoutChanged.emit() vbox.addWidget(frame) vbox.addWidget(self.treeview) parent.itemCountChanged.connect(self.updateCounts)