我有一个错误:
Error using edit (line 31)
The input must be a string.
Error in showTF>callback_update_model (line 507)
vars.dropheight = str2num(get(edit(2),'String'));
我的代码在这里:
params = varargin{1};
这是两个输入之一:
edit(2) = uicontrol('Parent',jCalc,'Units','Pixels','Position',[300 20 100 20],'String',num2str(params(2)),'Style','edit',...
'Callback',@edit_2,...
'BackgroundColor',[1 1 1],'ToolTipString','Puck Drop Height');
按钮回调:
function callback_update_model(~,~)
vars.dropheight = str2num(get(edit(2),'String'));
vars.armradius = str2num(get(edit(1),'String'));
kiddies = get(guiel.hAX(3),'Children');
delete(kiddies);
clear kiddies;
set(guiel.tfPanel,'Visible','off','Position',cnst.tfPanelpos);
set(guiel.hAX(1),'Position',cnst.axpos1);
if ishandle(guiel.hAX(2))
set(guiel.hAX(2),'Position',cnst.axpos2);
end
eval(get(guiel.hPB(4),'Callback'));
end
varargin显示1X1 cell [2]
,我很困惑我如何转换输入值。
您的问题是您已经使用了edit
作为变量,但是它也是一个内置函数,期望文件名作为字符串输入,因此您的错误。您应该避免使用这样的内置功能,因为它通常会导致问题和歧义。
通常,该变量将优先考虑并使用而不是阴影函数。在这种情况下,该函数似乎是通过2
的输入来调用的,而不是用2
索引的变量。这可能是因为callback_update_model
功能可能无法访问edit
变量。这是您应该做的解决此问题:
-
将变量的名称更改为诸如
hEdit
之类的(我通常是前言变量,这些变量将图形对象存储使用h
)。 -
检查
callback_update_model
是否正确嵌套了,以便它可以访问hEdit
或以另一种方式提供hEdit
。