【发布时间】:2017-10-18 03:15:14
【问题描述】:
我正在开发一个项目,我使用 Matlab GUI 在按下按钮时实时切换音频输出。我有一个 Matlab GUIDE 文件和一个使用音频系统工具箱的函数来监听 GUI 动作。
GUIDE 文件有一个 OpeningFcn,我在其中声明了各种句柄,然后 GUI 才可见。在 OpeningFcn 中,我声明了“handles.AttenuationFactor”。它的想法是,当用户稍后按下 GUI 中的按钮时,handles.AttenuationFactor 会相应地发生变化。
让单独的函数监听 GUI 操作没有问题。我只是从正确的 GUI 对象中检索 GUI 句柄:
gui = findobj('Tag','GUI’);
if ~isempty(gui)
% get handles
gdata = guidata(gui);
AttenuationFactor = gdata.AttenuationFactor;
end
%% Perform calculations with attenuation factor
这里是泡菜:我什么时候调用监听 GUI 的函数?
我无法在 OpeningFcn 中调用它,因为尚未调用最后一行代码 guidata(hObject,handles) 并且从“GUI”检索信息时“handles.attenuationFactor”因此不存在!
我已经尝试将函数调用放在按钮按下的回调函数中,但这意味着创建的代码应该只执行一次以在每次按下按钮时进行评估。
有没有办法在函数调用之前强制更新句柄?
【问题讨论】:
标签: matlab real-time matlab-guide handles