如何创建它调用句柄对象uicontrol对象的回调函数

问题描述 投票:-1回答:1

我已经定义了一个uicontrol按钮对象,我想,以显示手柄的东西时,我点击的按钮。当我尝试这样做,我得到的错误Undefined function or variable 'handles'。它没有看到手柄或任何其他对象,它是在GUI代码。

handles.c = 3;
A = uicontrol('Style', 'pushbutton');
A.Callback = display(handles.c)

此代码给我上面键入错误。我可能会给予处理对象的回调作为输入,但我不知道该怎么办。

提前致谢。

matlab user-interface
1个回答
2
投票

为了访问经常MATLAB的UI文档中提到的handles数据结构,你必须使用guidata设置新的值,并在回调时检索现有值。

所以从任何地方,如果你想设置的值,你会想要做的事,如:

handles.c = 3

% Replace `gcf` with the explicit handle to your figure if possible
guidata(gcf, handles)

那么你的回调里面,你可以得到当前guidata方式如下:

function callback(src, event)
  handles = guidata(src);
  display(handles.c)
end

然后分配该功能为回调到您的uicontrol

A = uicontrol('Style', 'pushbutton', 'Callback', @callback);

如果你不希望创建一个单独的回调函数,而是坚持一个班轮,您可以创建一个anonymous function来完成类似的任务

A.callback = @(src, evnt)display(getfield(guidata(src), 'c'))

正如你所看到的,明确的功能是比较容易理解

© www.soinside.com 2019 - 2024. All rights reserved.