GUI, make a handle disappear
이전 댓글 표시
Hey, I am MArc and I have a question about a GUI. have this GUI interface:

I want to achieve that when clicking both pink clickboxes I want to make all the red handles disappear. I tried with a function using the button 2, like this:
methods (Access = private)
function Button2Pushed(app, event,handles)
value1= get(handles.PRETESSATRECTECheckBox,'Value')==0;
value2= get(handles.PRETESSATENCASTAMENTCheckBox,'Value')==0;
value3= get(handles.PRETESSATPARABLICCheckBox,'Value')==1;
value4= get(handles.ntramsCheckBox,'Value')==1;
if value1 && value2 && value3&& value4
set(handles.LmEditField_3, 'Visible', 'off');
set(handles.readelaseccim2EditField_2, 'Visible', 'off');
set(handles.LNmEditField_2, 'Visible', 'off');
set(handles.Inrciam4EditField_2, 'Visible', 'off');
set(handles.AmpladadelaseccimEditField_2, 'Visible', 'off');
set(handles.ncordonsEditField_2, 'Visible', 'off');
set(handles.Sigma_uMPaEditField_2, 'Visible', 'off');
set(handles.Sigma_yMPaEditField_2, 'Visible', 'off');
set(handles.CargapermanentKNm2EditField, 'Visible', 'off');
set(handles.SobrecargavariableKNm2EditField, 'Visible', 'off');
set(handles.SobrecargavariableKNEditField, 'Visible', 'off');
set(handles.PuntualKNEditField, 'Visible', 'off');
set(handlesD_vainammEditField, 'Visible', 'off');
else
set(handles.LmEditField_3, 'Visible', 'on');
end
end
end
But it does not work, it does nothing. I would like some advice, thank you
댓글 수: 6
Rik
2020년 8월 19일
Are you sure this code is reached?
Also, I would store all handles that need to be turned off in a single array. That way you only have one place to add the fields. Because you're using set you can simply input the array of objects and set the Visible property with a single line of code.
Marc Martinez Maestre
2020년 8월 19일
Rik
2020년 8월 19일
If you can't set a break point in this code, you can consider putting a msgbox at the start of the function. That way you can see if the function actually runs as expected.
cr
2020년 8월 19일
Did you try relaunching Matlab?
First thing to try would be to check if the callback is actually being invoked when button2 is clicked. Second, see if any of value1,2,3,4 are 0 despite the checkbox statuses as shown in picture (are the underlying handles names of checkboxes correct?).
Marc Martinez Maestre
2020년 8월 20일
Rik
2020년 8월 20일
Change this
function CheckBoxValueChanged(app, event)
to this
function CheckBoxValueChanged(app, event)
uiwait(msgbox('the function was called'));
Then you know for sure if it is called or not.
채택된 답변
추가 답변 (1개)
Ruger28
2020년 8월 19일
As suggested above, make all of the items you would like to "disappear" (turn visibility off) by lumping them together in a single handle. Below is a quick example I threw together.
% in the opening function before gui is made visible
handles.MyEditBoxes = [handles.edit1,handles.edit2,handles.edit3,handles.edit4,handles.edit5];
Then for your pushbutton, get the values of the two checkboxes, and AND them.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
value1 = get(handles.checkbox1,'Value');
value2 = get(handles.checkbox2,'Value');
if value1 && value2
set(handles.MyEditBoxes,'Visible','off');
else
set(handles.MyEditBoxes,'Visible','on');
end
This will hide/unhide the items in MyEditBoxes.
카테고리
도움말 센터 및 File Exchange에서 Data Type Identification에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

