MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何从MATLAB中的另一个函数文件执行回调函数? (https://www.labfans.com/bbs/showthread.php?t=22949)

poster 2019-12-10 16:49

如何从MATLAB中的另一个函数文件执行回调函数?
 
我有两个功能:一个使用按钮创建UI,另一个我想从中执行与按下按钮相同的功能。

当我使用get(gcf,'children')深入研究该图时get(gcf,'children')我发现了带有以下Callback属性的按钮:

ans = [function_handle] [ 1] [ 1] [1x6 double] 现在,据我了解,使用第一个数组元素,我应该能够执行与从UI按下按钮时执行的功能相同的功能,但是我该怎么做呢?我尝试了一切,但似乎没有任何效果。


回答:
从您获得的按钮回调的结果来看,似乎该回调已通过以下方式创建(例如):

hButton = uicontrol(...,'Callback',{@button_callback,1,1,[1:6]}); 回调函数button_callback的定义如下:

function button_callback(hObject,eventdata,a,b,c) ... end 请注意,回调函数[URL="http://www.mathworks.com/help/matlab/creating_guis/write-callbacks-using-the-programmatic-workflow.html#brqow8p"]的输入参数列表[/URL]中还有[URL="http://www.mathworks.com/help/matlab/creating_guis/write-callbacks-using-the-programmatic-workflow.html#brqow8p"][I]两个额外的参数[/I][/URL] : hObject (调用回调的对象的句柄)和eventdata (事件数据的结构)。

如果你想调用与应传递给它的3点额外的参数(功能手柄1 , 1 ,和1×6阵列),您还需要传递参数的hObject和eventdata投入。这是调用函数的外观(使用变量ans ):

ans{1}(hButton,[],ans{2:end}); 首先,您需要从单元格数组( ans{1} )中获取函数句柄,然后[URL="http://www.mathworks.com/help/matlab/matlab_prog/calling-a-function-using-its-handle.html"]像其他任何函数一样,使用括号对其进行调用[/URL] 。对于hObject您可以将句柄传递给uicontrol对象(如果不需要则为空值),而对于eventdata您可以仅传递一个空值。然后,从单元格数组中获取附加值作为[URL="http://www.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html"]逗号分隔的列表[/URL] ( ans{2:end} ),并将每个值作为单独的附加参数传递给函数。



[url=https://stackoverflow.com/questions/1819232]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 00:59

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.