It's unclear to me where curve.sigClicked.connect(self.plotClicked) needs to be called.
----------------------------------------------------------------------------------------------------------------------------------------
class DataViewer(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.setupUi(self)
self.df = None
self.vr_headers = []
self.ls_headers = []
self.sweeps = []
self.plot_index_list = []
self.counter = 1
self.curves = []
def setupUi(self, Form):
Form.resize(1742, 988)
Form.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
Form.setWindowTitle("Data Viewer")
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
self.windowLayout = QtWidgets.QHBoxLayout(Form)
self.windowLayout.setObjectName("windowLayout")
self.leftColumn = QtWidgets.QVBoxLayout()
self.leftColumn.setObjectName("leftColumnLayout")
self.treeWidget = QtWidgets.QTreeWidget(Form)
self.treeWidget.setObjectName("treeWidget")
self.treeWidget.headerItem().setText(0, "Data")
self.loadDataFolder_btn = QtWidgets.QPushButton("Load Data Folder", Form)
self.loadDataFolder_btn.setObjectName("loadDataFolder_btn")
self.loadDataFolder_btn.clicked.connect(self.load_data_folder)
self.loadDataFolder_btn.clicked.connect(self.update_treeWidget)
self.clearChecked_btn = QtWidgets.QPushButton("Clear Check Boxes", Form)
self.clearChecked_btn.setObjectName("clearChecked_btn")
self.clearChecked_btn.clicked.connect(self.clear_checked)
self.createPlot_btn = QtWidgets.QPushButton("New Plot", Form)
self.createPlot_btn.setObjectName("createPlot_btn")
self.createPlot_btn.clicked.connect(self.add_new_plot)
self.addToPlot_btn = QtWidgets.QPushButton("Add plot to:", Form)
self.addToPlot_btn.setObjectName("addToPlot_btn_btn")
self.addToPlot_btn.clicked.connect(self.add_to_plot)
self.plotNum_dropdown = QtWidgets.QComboBox(Form)
self.plotNum_dropdown.setObjectName("plotNum_dropdown")
self.clearPlot_dropdown = QtWidgets.QComboBox(Form)
self.clearPlot_dropdown.setObjectName("clearPlot_dropdown")
self.clearPlot_dropdown.addItem("All")
self.markersPlot_dropdown = QtWidgets.QComboBox(Form)
self.markersPlot_dropdown.setObjectName("markersPlot_dropdown")
self.markersPlot_dropdown.addItem("All")
self.addPlotLayout = QtWidgets.QHBoxLayout()
self.addPlotLayout.setObjectName("addPlotLayout")
self.addPlotLayout.addWidget(self.addToPlot_btn)
self.addPlotLayout.addWidget(self.plotNum_dropdown)
self.clearPlot_btn = QtWidgets.QPushButton("Clear:", Form)
self.clearPlot_btn.setObjectName("clearPlot_btn")
self.clearPlot_btn.clicked.connect(self.clear_plot)
self.clearPlotLayout = QtWidgets.QHBoxLayout()
self.clearPlotLayout.setObjectName("clearPlotLayout")
self.clearPlotLayout.addWidget(self.clearPlot_btn)
self.clearPlotLayout.addWidget(self.clearPlot_dropdown)
self.addMarker_btn = QtWidgets.QPushButton("Add Marker", Form)
self.addMarker_btn.setObjectName("addMarker_btn")
self.addMarker_btn.clicked.connect(self.add_marker)
self.tabWidget = QtWidgets.QTabWidget(Form)
tab_widget_sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.tabWidget.setSizePolicy(tab_widget_sizePolicy)
self.tabWidget.setMinimumSize(QtCore.QSize(200, 100))
self.tabWidget.setObjectName("tabWidget")
self.Import_and_Plot_tab = QtWidgets.QWidget()
self.Import_and_Plot_tab.setObjectName("Import_and_Plot_tab")
self.import_plot_layout = QtWidgets.QVBoxLayout(self.Import_and_Plot_tab)
self.import_plot_layout.setObjectName("import_plot_layout")
self.import_plot_layout.addWidget(self.loadDataFolder_btn)
self.import_plot_layout.addWidget(self.clearChecked_btn)
self.import_plot_layout.addWidget(self.createPlot_btn)
self.import_plot_layout.addLayout(self.addPlotLayout)
self.import_plot_layout.addLayout(self.clearPlotLayout)
self.Markers_tab = QtWidgets.QWidget()
self.Markers_tab.setObjectName("Markers_tab")
self.markers_tab_layout = QtWidgets.QVBoxLayout(self.Markers_tab)
self.markers_tab_layout.setObjectName("markers_tab_layout")
self.markers_tab_layout.addWidget(self.addMarker_btn)
self.markers_tab_layout.addWidget(self.markersPlot_dropdown)
self.tabWidget.addTab(self.Import_and_Plot_tab, "Import && Plot")
self.tabWidget.addTab(self.Markers_tab, "Markers")
self.leftColumn.addWidget(self.treeWidget)
self.leftColumn.addWidget(self.tabWidget)
self.line = QtWidgets.QFrame(Form)
self.line.setFrameShape(QtWidgets.QFrame.VLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.plotWidget = pg.GraphicsLayoutWidget(Form)
self.plotWidget.setObjectName("plotWidget")
self.windowLayout.addLayout(self.leftColumn)
self.windowLayout.addWidget(self.line)
self.windowLayout.addWidget(self.plotWidget, QtCore.Qt.AlignCenter)
def update_treeWidget(self):
self.treeWidget.clear()
all_headers = self.vr_headers + self.ls_headers
for header in all_headers:
parent_item = QtWidgets.QTreeWidgetItem(self.treeWidget)
parent_item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsTristate)
parent_item.setText(0, header)
for sweep in self.sweeps:
child_item = QtWidgets.QTreeWidgetItem(parent_item)
child_item.setCheckState(0, QtCore.Qt.Unchecked)
child_item.setText(0, sweep)
def create_ratio_tab(self):
self.Ratio_tab = QtWidgets.QWidget()
self.Ratio_tab.setObjectName("Ratio_tab")
self.tabWidget.addTab(self.Ratio_tab, "Ratio")
def load_data_folder(self):
folder = QtWidgets.QFileDialog.getExistingDirectory(self)
self.df = pvi.import_folder(folder)
if self.df['voltage recording'] is not None:
self.vr_headers = self.df['voltage recording'].columns[1:].tolist()
if self.df['linescan'] is not None:
self.ls_headers = self.df['linescan'].columns[1::2].tolist()
self.create_ratio_tab()
self.sweeps = self.df['voltage recording'].index.levels[0]
def find_checked(self):
checked = dict()
root = self.treeWidget.invisibleRootItem()
signal_count = root.childCount()
for i in range(signal_count):
signal = root.child(i)
if signal.checkState(0) == QtCore.Qt.Unchecked:
continue
else:
checked_sweeps = list()
num_children = signal.childCount()
for n in range(num_children):
child = signal.child(n)
if child.checkState(0) == QtCore.Qt.Checked:
checked_sweeps.append(child.text(0))
checked[signal.text(0)] = checked_sweeps
return checked
def clear_checked(self):
root = self.treeWidget.invisibleRootItem()
signal_count = root.childCount()
for i in range(signal_count):
signal = root.child(i)
if signal.checkState(0) == QtCore.Qt.Unchecked:
continue
else:
signal.setCheckState(0, QtCore.Qt.Unchecked)
num_children = signal.childCount()
for n in range(num_children):
child = signal.child(n)
if child.checkState(0) == QtCore.Qt.Checked:
continue
else:
child.setCheckState(0, QtCore.Qt.Unchecked)