How can i access elements of popup menu and use it in Push Button callbacks?
조회 수: 4 (최근 30일)
이전 댓글 표시
function popupmenu1_Callback(hObject, eventdata, handles)
contents= cellstr(get(hObject,'String'));
popchoice1 = contents(get(hObject,'Value'));
if (strcmp(popchoice1,'choice 1'))
pop1val=10;
elseif (strcmp(popchoice1,'choice 2'))
pop1val=20;
elseif(strcmp(popchoice1,'choice 3'))
pop1val=30;
end
set(handles.popupmenu1,'UserData',pop1val);
assignin('base','pop1val',pop1val);
function popupmenu2_Callback(hObject, eventdata, handles)
contents= cellstr(get(hObject,'String'));
popchoice2= contents(get(hObject,'Value'));
if (strcmp(popchoice2,'a'))
pop2val=40;
elseif(strcmp(popchoice2,'b'))
pop2val=50;
elseif(strcmp(popchoice2,'c'))
pop2val=60;
end
set(handles.popupmenu2,'UserData',pop2val);
assignin('base','pop2val',pop2val);
function pushbutton1_Callback(hObject, eventdata, handles)
pop1val=get(handles.popupmenu1,'UserData');
pop2val=get(handles.popupmenu2,'UserData');
c=pop1val*pop2val;
set(handles.edit1,'Value',str2double(c));
In the above probelm i need to calculate mutiplication of two numbers based on choices of two popup menu data and need to access that data in push button callback to calculate the mutiplication.
댓글 수: 1
Adam
2019년 9월 16일
gives details of the various ways to share data between callbacks in a GUI. Personally I use the guidata approach when working with a GUIDE GUI.
채택된 답변
Ankit
2019년 9월 16일
Hello Anurag,
You can use either of the following solutions:
Solution.1: As you are assigning the values to the workspace you can read it by using evalin command.
function pushbutton1_Callback(hObject, eventdata, handles)
pop1val=evalin('base','pop1val');
pop2val=evalin('base','pop2val');
c=pop1val*pop2val;
set(handles.edit1,'string',c); % here you don't have to convert as the value already in double.
Solution.2:
assignin('base','pop1val',pop1val) This statement you don't require in your code. As you already setting the value of 'UserData' for popupmenu (set(handles.popupmenu1,'UserData',pop1val);)
This is how your code looks now:
function popupmenu1_Callback(hObject, eventdata, handles)
contents= cellstr(get(hObject,'String'));
popchoice1 = contents(get(hObject,'Value'));
if (strcmp(popchoice1,'choice 1'))
pop1val=10;
elseif (strcmp(popchoice1,'choice 2'))
pop1val=20;
elseif(strcmp(popchoice1,'choice 3'))
pop1val=30;
end
set(handles.popupmenu1,'UserData',pop1val);
function popupmenu2_Callback(hObject, eventdata, handles)
contents= cellstr(get(hObject,'String'));
popchoice2= contents(get(hObject,'Value'));
if (strcmp(popchoice2,'a'))
pop2val=40;
elseif(strcmp(popchoice2,'b'))
pop2val=50;
elseif(strcmp(popchoice2,'c'))
pop2val=60;
end
set(handles.popupmenu2,'UserData',pop2val);
function pushbutton1_Callback(hObject, eventdata, handles)
pop1val=get(handles.popupmenu1,'UserData');
pop2val=get(handles.popupmenu2,'UserData');
c=pop1val*pop2val;
set(handles.edit1,'string',c);
Accept it if its work for you!!
Thanks
Ankit
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Debugging and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!