我有一个MATLAB程序,我正在做GUI。它有几个输入和输出,所有工作正常,除了一个,我不明白为什么。
输入是Area_Cov,该输入在代码中没有改变,只是使用它。
在GUI中,我使用了一个编辑框,将其标记为“Area_Cov” 这是编辑框回调函数,我已经使用相同的代码用于许多其他正常工作的框。
function Area_Cov_Callback(hObject, eventdata, handles)
% hObject handle to Area_Cov (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Area_Cov as text
% str2double(get(hObject,'String')) returns contents of Area_Cov as a double
v = (get(hObject,'String')); %get recently entered string
if (str2num(v) <= 0)
waitfor(warndlg('Area value has to be real','!! Warning !!'))
(warndlg('The value will be set to 10452','!! Warning !!'))
set(hObject,'String',10452);
else
Area_Cov = handles.Area_Cov; %update saved value
end
x = get(handles.Area_Cov,'String');
if isempty(x)
waitfor(warndlg('Must specify Area Covered','!! Warning !!'))
(warndlg('Value set to 10452','!! Warning !!'))
set(hObject,'String',10452);
end
guidata(hObject,handles)
当我按下按钮计算时,我有以下有关Area_Cov
的内容Area_Cov=handles.Area_Cov;
assignin('base', 'Area_Cov', Area_Cov);
当我运行代码并按下按钮时,一切似乎都正常。 但是当我尝试在matlab中检查Area_Cov的值时,我总是得到值259.0017
我删除了该框,再次写入,将Area_Cov更改为Area_Covered,检查matlab代码,并且代码中没有任何地方或GUI代码,其中Area_Cov具有除编辑框以外的输入,并且无处这个值等于259.0017。 此外,如果我没有更改框中的值(最初为10452),则值将保持不变,否则它将仅更改为259.0017。
该代码适用于许多其他方框,因此我认为不是问题。
以前有人遇到过这个问题吗?帮助
答案 0 :(得分:1)
Area_Cov = handles.Area_Cov;
只需将Area_Cov
设置为句柄,而不是句柄的内容。 (259.0017可能是数字表示)。你可能想要设置的是str2num(v)
表示的数值,用于检查输入的有效性,然后再也不用。
我也不清楚为什么你要拨打get
两次,x
和v
之间的差异可能是什么。