OpenFcn Matlab GUIDE - 以正确的顺序初始化句柄和调用函数



我正在做一个项目,我使用 Matlab GUI 在按下按钮时实时切换音频输出。我有一个 Matlab GUIDE 文件和一个使用音频系统工具箱的函数,用于侦听 GUI 操作。

GUIDE 文件有一个 OpenFcn,我在 GUI 可见之前声明了各种句柄。在开头Fcn中,我声明"句柄。衰减因子"。这个想法是,当用户稍后按下GUI中的按钮时,手柄。衰减因子会相应变化。

我让单独的函数侦听 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 的函数?

我无法在 OpenFcn 中调用它,因为最后一行代码 guidata(hObject,句柄)尚未调用,并且从"GUI"检索信息时,"句柄.衰减因子"因此不存在!

我尝试将函数调用放在按钮按下的回调函数中,但这意味着创建只应执行一次的代码,以便在每次按下按钮时进行评估。

有没有办法在函数调用之前强制更新句柄?

在开头,您需要设置一个基值。调用一个全局变量并设置值。相应地更新句柄。

你应该使用 matlab 中的 set/get 函数来处理句柄。设置句柄.衰减因子是什么意思?

如果用户更改了衰减因子的值,一旦它发生变化,在按钮的回调中,您可以非常简单地检索该值。 例如get(handles.attenuationFactor,'Value')

最新更新