How can i access elements of popup menu and use it in Push Button callbacks?

2 次查看(过去 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.

采纳的回答

Ankit
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 CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by