6

我正在尝试以编程方式在 MATLAB 中创建一个单击事件,该事件将模拟用户单击 GUI 对象。对象的回调函数是子函数,所以不能直接调用。但是,我能够从对象中获取回调属性,该属性最终是一个 3×1 元胞数组,具有以下内容:

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

如何在代码中调用此回调函数,以模拟用户单击 GUI 对象时会发生的情况?

4

2 回答 2

8

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

callbackCell = get(hObject,'Callback');

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

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

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

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

callbackCell{1}(hObject,[],callbackCell{2:end});
于 2011-04-27T04:33:51.000 回答
2

这就是内置hgfeval函数的用途: http ://undocumentedmatlab.com/blog/hgfeval/

于 2011-04-27T23:49:01.690 回答