Пример #1
0
            # are reflected in the data table
            self._data.iloc[index.row(),index.column()] = value
            print(self._data)
            print("data committed : " , self._data.values[index.row()][index.column()])
            self.dataChanged.emit(index, index)
            return True
        return None

    def updateData(self, new_dataframe):
        # quick hack, not sure whether the dataChanged signal I am emitting
        # is consistent with expectations
        self._data=new_dataframe
        self.dataChanged.emit(0,0)
        for i in range(len(new_dataframe)):
            self.dataChanged.emit(i,i)

    def flags(self, index):
        flags = super(self.__class__,self).flags(index)
        flags |= Qt.ItemIsSelectable
        flags |= Qt.ItemIsEnabled

        return flags

if __name__ == '__main__':
    app = QApplication(sys.argv)
    model = pandasModel(df)
    view = QTableView()
    view.setModel(model)
    view.resize(800, 600)
    view.show()
    sys.exit(app.exec_())
    np.random.seed(1)
    viewer = napari.Viewer()
    blobs = data.binary_blobs(length=128, volume_fraction=0.1, n_dim=2)
    labeled = ndi.label(blobs)[0]

    # Measure some properties of the blobs and create a DataFrame
    measurements = regionprops_table(label_image=labeled,
                                     properties=('label', 'area',
                                                 'eccentricity', 'solidity'))
    df = pd.DataFrame(measurements)
    # Create a Qt TableView from the pandas table
    model = pandasModel(
        df[df.label == 1])  # dirty hack so we just have a one-row table
    view = QTableView()
    view.setModel(model)
    view.resize(800, 200)
    view.show()
    text = QtWidgets.QLabel("")
    text.show()
    labels_layer = viewer.add_labels(labeled, name='blob ID')

    @viewer.mouse_drag_callbacks.append
    def get_ndisplay(viewer, event):
        if 'Alt' in event.modifiers:
            print('viewer display ', viewer.dims.ndisplay)

    @labels_layer.mouse_move_callbacks.append
    def move(layer, event):
        #print(event.pos)
        label_nr = layer.get_value()
        subset = df[df["label"] == label_nr]