import pyqtgraph as pg from pyqtgraph.Qt import QtWidgets import pyqtgraph.parametertree.parameterTypes as pTypes from pyqtgraph.parametertree import Parameter, ParameterTree from src.utils.json_tools import read_json, write_json class settingsWindow(QtWidgets.QWidget): def __init__(self, path: str, name: str): super(settingsWindow, self).__init__() self.settingsPath = path self.name = name self.data = {} self.params = None self.load_settings() self.init_ui() def load_settings(self): self.data = read_json(self.settingsPath) def write_settings(self): write_json(self.settingsPath, self.data) def _getTreeStructure(self) -> list: params = [] for key, value in self.data.items(): params.append({'name': str(key), 'type': type(value).__name__, 'value': value}) return params def init_ui(self): temp = self._getTreeStructure() self.params = Parameter.create(name='params', type='group', children=temp) self.params.sigTreeStateChanged.connect(self.change) ParamsTree = ParameterTree() ParamsTree.setParameters(self.params) ParamsTree.setWindowTitle('Settings ,f,f') layout = QtWidgets.QGridLayout() layout.addWidget(ParamsTree, 0,0) self.setLayout(layout) self.show() def change(self, param, changes): print("tree changes:") for param, change, data in changes: path = self.params.childPath(param) if path is not None: childName = '.'.join(path) else: childName = param.name() print(' parameter: %s'% childName) print(' change: %s'% change) print(' data: %s'% str(data)) print(' ----------') if __name__ == '__main__': app = pg.mkQApp("Parameter Tree Example") window = settingsWindow('params\operator_params.json', 'operator') app.exec()