Сбросьте ползунок по умолчанию в MATLAB GUIDE

Я делаю эквалайзер, с тремя слайдами для низких, средних и высоких частот. Чтобы установить значение по умолчанию на 0 дБ(1), ползунки должны начинаться с середины. У меня это работает так:

function interfaz_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.low,'Value',0.5);
handles.low=initialvalue;
guidata(hObject, handles);

Я хочу сделать кнопку, чтобы при ее нажатии ползунок возвращался к исходному значению. Я пробовал так:

function eq_reset_Callback(hObject, eventdata, handles)
set(handles.low,'Value',0.5);
handles.low=initialvalue;
guidata(hObject, handles);

Это вызывает следующую ошибку:

Error using handle.handle/set
Invalid or deleted object.

Error in interfaz>eq_reset_Callback (line 644)
set(handles.low,'Value',0.5);

Error in gui_mainfcn (line 96)
        feval(varargin{:});

Error in interfaz (line 42)
    gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)interfaz('eq_reset_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback

Любые идеи, почему это происходит? Альтернативные способы сделать это?


person David    schedule 12.11.2015    source источник
comment
Вы перезаписываете дескриптор с помощью handles.low=initialvalue;   -  person excaza    schedule 13.11.2015


Ответы (1)


Попробуйте следующий код:

Функция открытия:

function interfaz_OpeningFcn(hObject, eventdata, handles, varargin)
handles.low_initialvalue = 0.5;
set(handles.low,'Value',handles.low_initialvalue);
guidata(hObject, handles);

Функция обратного вызова кнопки:

function eq_reset_Callback(hObject, eventdata, handles)
set(handles.low,'Value',handles.low_initialvalue);
guidata(hObject, handles);
person oro777    schedule 13.11.2015