'KeyPressFcn'函数返回一个值

时间:2013-03-14 18:44:59

标签: matlab input figure

我正在尝试为我指定的函数找到一种方法,以便我的'KeyPressFcn'返回一个值。

目前我有:

figure('KeyPressFcn', @myFunc);

哪个好,但我需要访问值myFunc返回

有办法做到这一点吗?

我一直在http://www.mathworks.com/help/matlab/ref/figure_props.html#KeyPressFcn,但看看他们展示的例子,我仍然没有看到什么。

他们使用的例子有:

figure('KeyPressFcn', @(obj,evt)disp(evt));

它说它表示函数传递了一个事件结构。那么为什么不简单呢:

figure('KeyPressFcn', @disp(evt));

函数名称前面的(obj,evt)术语有什么意义?

什么是evt?什么是obj?什么是

的意义

1 个答案:

答案 0 :(得分:2)

您无法在MATLAB中返回带回调函数的值。相反,您可以使用setappdata之类的功能。您可以在需要时使用getappdata获取已设置的数据。

您可以像这样使用它们:

function myFunc(obj, evt)
    a = 42;
    setappdata(0, 'varName', a);
end

回调之外:

otherVarName = getappdata(0, 'varName');

otherVarName的值为42。


obj是其回调正在执行的对象。 evt是eventdata。 GUIDE documentation说:

  

hObject - 对象的句柄,例如GUI组件   回调被触发了。对于按钮组SelectionChangeFcn   回调,hObject是所选单选按钮或切换的句柄   按钮。

     

eventdata - 由用户操作触发的事件序列   作为由MATLAB形式的组件发出的表选择   struct(或不生成的组件的空矩阵)   EVENTDATA)

此处hObjectobjeventdataevt

假设您有一个编辑框,并且想要获取用户编写的文本。为此,您需要编辑框的句柄。这就是hObject给你的。

function buttonCallback(hObject, eventdata)
    str = get(hObject, 'String');
end