有没有办法将 uicontrol 回调函数的输出关联到它自己的“用户数据”?
Posted
技术标签:
【中文标题】有没有办法将 uicontrol 回调函数的输出关联到它自己的“用户数据”?【英文标题】:Is there any way to associate the output of uicontrol callback function to its own 'userdata'? 【发布时间】:2014-10-12 17:25:18 【问题描述】:例如,我的按钮 uicontrol 调用一个回调函数,'fun1_callback':
fh = figure;
uicontrol(fh,'style','pushbutton','userdata',_______,'callback',@fun1_callback);
回调函数位于单独的 .m 文件中。它返回一个输出变量,'out':
function out = fun1_callback(hobj,callbackdata)
out = rand(5);
end
有没有直接返回'out'到按钮的'userdata'属性(下划线代表的地方)?
【问题讨论】:
如果您需要一些有效的帮助,请向我们展示一些您正在做的事情的示例代码。同时,您还可以查看setappdata
文档。
【参考方案1】:
你只需要在你的回调函数中调用set
function out = fun1_callback(hobj,evt)
out = rand(5)
set( hobj , 'UserData' , out )
end
之后out
的结果将在按钮的userdata
中可用。
但如果您打算访问这些用户数据,则需要按钮的句柄来检索这些数据。所以我建议你将你的按钮定义为:
btnHandle = uicontrol(fh,'style','pushbutton','userdata',[],'callback',@fun1_callback);
然后在它们被定义后检索你的userdata
,你可以使用:
myValues = get(btnHandle,'UserData') ;
【讨论】:
@Hoki谢谢霍基。在回调函数中使用 set( hobj , 'UserData' , out ) 和 setappdata( hobj , 'UserData' , out ) 有什么区别吗?我猜如果使用 setappdata,'out' 不会存储在按钮的 userdata 属性中,并且在 'setappdata' 中使用的变量名可以是任何东西而不是 'userdata'? @sgyf。是的,appdata
比userdata
灵活一点(这是过去的遗留物)。它们可以被命名,你可以定义任意数量(如果需要的话,超过你在图中的 uicontrol 的数量),最重要的是,调用它们你只需要提供 any 控制图形(该函数将自行计算出parent
图形)。以上是关于有没有办法将 uicontrol 回调函数的输出关联到它自己的“用户数据”?的主要内容,如果未能解决你的问题,请参考以下文章