我正在尝试为我指定的函数找到一种方法,以便我的'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?什么是
的意义答案 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)
此处hObject
为obj
,eventdata
为evt
。
假设您有一个编辑框,并且想要获取用户编写的文本。为此,您需要编辑框的句柄。这就是hObject
给你的。
function buttonCallback(hObject, eventdata)
str = get(hObject, 'String');
end