コード例 #1
0
    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)