如何模仿用户单击以调用GUI对象的回调函数?

时间:2011-04-27 00:46:42

标签: user-interface function matlab callback uicontrol

我正在尝试以编程方式在MATLAB中创建一个点击事件,模仿用户点击GUI对象。对象的回调函数是一个子函数,所以我不能直接调用它。但是,我能够从对象获取回调属性,最终是一个3乘1的单元格数组,其中包含以下内容:

@uiBlockFn/callback_til [ 188.0011] [1x1 struct]

如何在代码中调用此回调函数,以便模仿用户单击GUI对象时会发生什么?

2 个答案:

答案 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/