我有一个包含以下代码的弹出菜单。有两个选项,分别为C1和C2。如果用户选择C1,我想将值设置为10,如果用户选择C2,我想将值设置为20。
function pop_Callback(hObject, eventdata, handles)
contents = cellstr(get(hobject,'String'));
A = contents{get(hObject,'Value')};
if (strcmp(A,'C1'))
X = 10;
elseif (strcmp(A,'C2'))
X = 20;
end
set(handles.pop,X)
我想使用带有按钮和静态文本的另一个功能来显示答案,无论输出值是设置值+12。
function push_Callback(hObject, eventdata, handles)
inX = get(handles.pop,X);
out = inX + 12;
set(handles.ans,'String',out)
但是,我在设置和获取功能时出现了一些错误,因此遇到了麻烦。请帮助。
答案 0 :(得分:1)
为避免使用全局变量,可以使用图形窗口的UserData属性(假设uiobject是同一图形的子级)。例如:
function pop_Callback(hObject, eventdata, handles)
% ...
set( ancestor(hObject,'figure'), 'UserData', X )
和
function push_Callback(hObject, eventdata, handles)
inX = get( ancestor(hObject,'figure'), 'UserData' );
out = inX + 12;
set(handles.ans,'String',out)
答案 1 :(得分:0)
也许您可以尝试使用全局变量
function pop_Callback(hObject, eventdata, handles)
global X;
contents = cellstr(get(hobject,'String'));
A = contents{get(hObject,'Value')};
if (strcmp(A,'C1'))
X = 10;
elseif (strcmp(A,'C2'))
X = 20;
set(handles.pop,X)
end
并使用同一行代码全局X;在任何要使用变量x的函数中。
function push_Callback(hObject, eventdata, handles)
global X;
out = X + 12;
set(handles.ans,'String',out)
在任何函数中,对该X的任何值更改对于将其声明为全局的所有函数都是可见的。