1

我刚开始学习按钮,我被卡住了。我有两个弹出菜单。当用户选择按钮时。每个弹出菜单选择的总数返回给用户。我从弹出菜单中获得了值,但我不知道在执行按钮后如何返回它。任何帮助表示赞赏

 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.
4

2 回答 2

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))
于 2013-11-08T07:40:31.380 回答
1

一种更精细但更强大的方法是创建自己的句柄类。

这样做您可以向自定义数据添加回调。我在这里做了一个例子。

于 2013-11-08T09:49:43.573 回答