我正在尝试以编程方式在MATLAB中创建一个点击事件,模仿用户点击GUI对象。对象的回调函数是一个子函数,所以我不能直接调用它。但是,我能够从对象获取回调属性,最终是一个3乘1的单元格数组,其中包含以下内容:
@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
如何在代码中调用此回调函数,以便模仿用户单击GUI对象时会发生什么?
答案 0 :(得分:8)
假设你有一个带句柄hObject
的图形对象,你就得到了对象的回调:
callbackCell = get(hObject,'Callback');
正如您所提到的,您得到的单元格数组callbackCell
最终是一个3元素单元格数组,第一个单元格中有function handle,其他两个单元格中有其他数据。当callback for an object is defined as a cell array(就像你的情况一样)时,回调函数句柄(或字符串名称)存储在第一个单元格中,而你希望传递给回调函数的其他输入参数位于其余单元格中。
但是,当激活对象时调用此回调时,MATLAB会在输入参数列表的开头自动插入2个附加参数。这些是:
hObject
:正在调用其回调的对象的句柄。eventData
:与用户激活事件相关的数据结构,通常只是空矩阵[]
(a few cases除外)。因此,如果您想模仿用户激活的对象的操作,您可能需要调用您的回调函数,如下所示(假设不需要事件数据):
callbackCell{1}(hObject,[],callbackCell{2:end});
答案 1 :(得分:2)
这就是内置的 hgfeval 功能适用于: http://undocumentedmatlab.com/blog/hgfeval/