WeldingSpotPerformance/src/gui/settings_windows.py

65 lines
2.0 KiB
Python
Raw Normal View History

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()