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

Ann*_*nny 6 matlab user-interface function callback uicontrol

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

@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
Run Code Online (Sandbox Code Playgroud)

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

gno*_*ice 8

假设你有一个带句柄的图形对象hObject,你得到了对象的回调,如下所示:

callbackCell = get(hObject,'Callback');
Run Code Online (Sandbox Code Playgroud)

正如您所提到的,callbackCell您获得的单元格数组最终是一个3元素单元格数组,其中第一个单元格中包含函数句柄,另外两个单元格中包含其他数据.当一个对象回调被定义为一个单元格数组时(就像你的情况一样),回调函数句柄(或字符串名称)存储在第一个单元格中,并且你想要传递给回调函数的其他输入参数位于剩下的细胞.

但是,当激活对象时调用此回调时,MATLAB会在输入参数列表的开头自动插入2个附加参数.这些是:

  • hObject:正在调用其回调的对象的句柄.
  • eventData:与用户激活事件相关的数据结构,通常只是空矩阵[](少数情况除外).

因此,如果您想模仿用户激活的对象的操作,您可能需要调用您的回调函数,如下所示(假设不需要事件数据):

callbackCell{1}(hObject,[],callbackCell{2:end});
Run Code Online (Sandbox Code Playgroud)