Matlab/octave 将回调引用传递给 GUI 初始化函数

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

我正在学习用 Octave 编写 GUI 应用程序。具有带有几个 GUI 控件(例如按钮)和附加回调函数的代码,该回调函数作为独立函数保存在单独的文件中(函数 hp53132_update_param_callback(obj))。

当我在直接放置在主 m 代码脚本中的 gui 元素中使用回调函数引用时,该函数被正确调用。 在下一步中,我想将 gui 元素对象包装到一个包装函数中,该函数将在 GUI 初始化时调用。 为此,我用下面的代码片段编写了一个函数 hp53132_gui_initialize(hfig, callback_function)。

function h = hp53132_gui_initialize(hfig, callback_function)

h.panel1 = uipanel('Parent',hfig, 'Units','normal','Position', [2/3 0 1/3 1]);
 h.ch1_zin_radio_buttons = uibuttongroup('Parent',h.panel1, 'Position', [0 0.85 1/5 0.1]);
  h.ch1_zin_radio_Z_50Ohm = uicontrol ...
                                   ("Parent",h.ch1_zin_radio_buttons, "style", "radiobutton",
                                   "units", "normalized",
                                   "string", "50Ohm",
                                   "callback", @callback_function,
                                   "value", 0,
                                   "position", [0.1 0.4 0.9 0.2]); 
 % and so forth...
endfunction 

但是,当我尝试在主脚本中将函数引用作为参数传递给它时


hfig = figure('Units', 'normal', 'Position', [0.1 0.1 .8 .9]);  %not quite full screen

h=hp53132_gui_initialize(hfig,@hp53132_update_param_callback);

guidata(hfig,h); % set GUI custom data, pass it to gcf object for callback functions

当我按下按钮或更改某些 GUI 控件时,我收到以下错误消息。

callback_function = @hp53132_update_param_callback
>> error: invalid function handle, unable to find function for @callback_function
error: invalid function handle, unable to find function for @callback_function

回调函数引用似乎在某处丢失了。我试图将其定义为持久性,但这没有帮助。

matlab user-interface callback octave
1个回答
0
投票

这似乎更像是您的 MatLab/Octave 环境的问题。

运行您的代码不会产生任何错误(1个关于使用“

normal
”而不是“
normalize
”用于您的单位的警告)但没有错误。

我会仔细检查您是否已将函数的位置包含在路径中,如果没有以编程方式(请参阅函数

addpath
)或手动使用文件浏览器将其添加到路径中。

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