我刚刚开始学习按钮,我被卡住了。我有两个弹出菜单。当用户选择按钮时。每个弹出菜单选项的总数返回给用户。我从弹出菜单中获取了值,但是在执行按钮后我不知道如何返回它。任何帮助表示赞赏
function pushbutton1_Callback(hObject, eventdata, handles)
math=0;
data1 =get(handles.popupmenu1, 'Value') %processing data from first pop up menu
if data1== 1
math=1
elseif data1 == 2
math=4
end
data2=get(handles.popupmenu2, 'Value') %processing data from second pop up menu
if data2==1
math=math + 5;
end
% I tabulated math which is some number. I want to return it back to the user
in a text outside of the button.
答案 0 :(得分:2)
还有另一种方法可以返回值:您将其传递并存储在guidata结构中。在文档中搜索guidata以获取详细信息。文档中的一个例子:
function My_Callback()
% ...
% Get the structure using guidata in the local function
myhandles = guidata(gcbo);
% Modify the value of your counter
myhandles.numberOfErrors = myhandles.numberOfErrors + 1;
% Save the change you made to the structure
guidata(gcbo,myhandles)
简要说明如何做到:
1。通过myhandles = guidata(handle_of_the_figure)获取数据
2. 添加/修改数据,例如myhandles.Test = 123
3。不要忘记保存更改,否则它们会“刚刚消失” - >使用guidata(handle_of_the_figure,myhandles)
4。来测试它,然后在另一个函数中加载guidata并查找更改!
修改强>
在重新阅读你的问题时,我想到你可能只想在你的回调中计算出的值显示在其他地方。例如,如果您希望在文本编辑uicontrol中显示该值,则可以使用:
set(HandleOfTheTextEdit, 'String', num2str(mat))
答案 1 :(得分:1)
更复杂但更强大的方法是创建自己的句柄类。
这样做可以为自定义数据添加回调。我做了一个例子here。