我正在开发一个项目,我使用Matlab GUI在按下按钮时实时切换音频输出。我有一个Matlab指南文件和一个使用音频系统工具箱监听GUI动作的功能。
GUIDE文件有一个OpeningFcn,我在GUI可见之前声明了各种句柄。在OpeningFcn中,我声明了“handles.AttenuationFactor”。当用户稍后按下GUI中的按钮时,handle.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'中检索信息时handle.attenuationFactor'因此不存在!
我已尝试将函数调用放在buttonpress的回调函数中,但这意味着创建的代码应该只执行一次,以便在每次按钮时进行评估。
有没有办法在函数调用之前强制更新句柄?
答案 0 :(得分:1)
在开场白中,您需要设置基值。可以调用全局变量并设置值。相应地更新句柄。
您应该使用matlab中的set / get函数来处理句柄。你设置handle.attenuationFactor是什么意思?
如果用户更改了attenuFactor的值,一旦更改,在按钮的回调上,您可以非常直接地检索该值。
例如get(handles.attenuationFactor,'Value')
。