我正在 Matlab 中以编程方式编写我的第一个 GUI。我已经构建了 GUI 的视觉方面,现在我正在编写回调函数。当我编写回调函数时,我需要向它传递两个句柄,但由于某种原因,只有一个句柄被传递给函数。我确定这确实是一个非常基本的问题,但我真的很难克服这个问题,而且我在文档中找不到任何理由为什么这不起作用
回调是针对一个按钮并接受两个用户输入的参数,然后使用这些数字构建一个传递函数。这两个参数被输入到可编辑的文本框中,带有句柄 orderEdit 和 timeConstEdit。我可以提取我需要的字符串,然后将其转换为数字数据格式。代码如下
首先,我将回调标志设置为按钮 rtdButton
set( rtdButton, 'Callback', @rtdPlot );
回调函数的前两行如下(一旦我可以得到这些值,函数的其余部分应该可以工作):
function rtdPlot(orderEdit,timeConstEdit)
n = str2num(get( orderEdit, 'String' ));
tau = str2num(get( timeConstEdit, 'String' ));
但是我得到了错误
??? Error using ==> str2num at 33
Requires string or character array input.
Error in ==> mixingModel>rtdPlot at 148
tau = str2num(get( timeConstEdit, 'String' ));
??? Error while evaluating uicontrol Callback
任何有关如何做到这一点的帮助将不胜感激
编辑:根据蜜蜂的帖子,正确的代码如下:
设置(rtdButton,'回调',{@rtdPlot,orderEdit,timeConstEdit});
function rtdPlot(src,eventdata,arg1,arg2)
n = str2num(get( orderEdit, 'String' ));
tau = str2num(get( timeConstEdit, 'String' ));
干杯约翰