Надеюсь, вы сможете мне помочь, и мой вопрос будет достаточно ясным.Я использую PyQT5, чтобы сделать графический интерфейс для настройки сценического двигателя.В графическом интерфейсе пользователь может изменить положение и т. Д. Этапа, изменив значение в дереве параметров.Раньше не было класса MainWindow, поэтому дерево было просто основным, и оно работало очень хорошо (мне пришлось создать класс MainWindow, чтобы использовать closeEvent).
Теперь пользователь может редактировать значения, но это изменениене учитывается программой, поэтому параметры этапа не меняются.Я не знаю, что мне следует изменить в функции Change или в другом месте, чтобы сделать переход от основного класса к классу MainWindow
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow,self).__init__()
self.initUI()
def initUI(self):
######### Parameters of the Parameter tree #########
params = [
{'name': 'Parameters', 'type': 'group', 'children': [
{'name': 'Center Position', 'type': 'float', 'value': CenterPos , 'step': 0.001,'siPrefix': True, 'suffix': 'm'},
{'name': 'Range', 'type': 'float', 'value': Range, 'limits':(0,24),'step': 0.001,'siPrefix': True, 'suffix': 'm'},
{'name': 'Step Size', 'type': 'float', 'value': StepSize,'siPrefix': True,'suffix': 'm','readonly': True},
{'name': 'Points', 'type': 'int', 'value': int(Points), 'limits': (1, 256), 'step': 1},
]},
]
p = Parameter.create(name='params', type='group', children=params)
t = ParameterTree()
t.setParameters(p, showTop=False)
t.setWindowTitle('pyqtgraph example: Parameter Tree')
def change(param, changes):
global p,StartingPoint,ArrivingPoint,CenterPos,Range,Points,StepSize
for param, data in changes:
path = p.childPath(param)
if path[0]=='Stage Parameters':
if path[1]=='Center Position':
CenterPos = data*1E3
StartingPoint=data*1E3-Range/2.0
ArrivingPoint=data*1E3+Range/2.0
StepSize = (ArrivingPoint-StartingPoint)/Points
p.param('arameters','Step Size').setValue(StepSize)
if path[1]=='Range':
Range=data*1E3
StartingPoint=CenterPos-Range/2.0
ArrivingPoint=CenterPos+Range/2.0
StepSize = (ArrivingPoint-StartingPoint)/Points
p.param('Parameters','Step Size').setValue(StepSize)
if path[1]=='Points':
Points=data
StepSize=Range/data
p.param('Parameters','Step Size').setValue(StepSize)
p.sigTreeStateChanged.connect(change)
w = MainWindow()