65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
|
|
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()
|
||
|
|
|
||
|
|
|