我在MATLAB中遇到一个问题,我真的不知道可能是什么原因。我在MATLAB R2007b上使用GUIDE进行了GUI构建。在这个GUI中,我有一个用于输入文件名的编辑,然后用于保存一些数据。我使用编辑回调函数来测试文件名是否有效,方法是检查在空白时用get(hObject,'String')
收到的字符串,然后如果键入的文件名是否存在则激活/取消激活加载按钮。字符串值也会保存到句柄结构中的变量中。
我现在面临的问题是,由于某些原因,如果我输入名称'default'或者输入的名称为空,则文件名的设置不起作用。当编辑中没有输入任何内容时,if (isempty(handles.fileName))
块中的语句将被执行。当删除编辑中显示的字符串中的默认值时。您可以在下面找到回调函数的代码。
在OpeningFcn中:
handles.fileName = 'default';
我的回调:
function edit_fileName_Callback(hObject, eventdata, handles)
handles.fileName = get(hObject,'String');
if (isempty(handles.fileName))
handles.fileName = 'default';
disp(handles.fileName)
end
handles.fileName = strrep(handles.fileName,' ','_');
set(hObject,'String',handles.fileName);
if exist(['trajectories/' handles.fileName '.mat'],'file') == 2
set(handles.pushbutton_load,'Enable','on')
else
set(handles.pushbutton_load,'Enable','off')
end
guidata(hObject, handles);
有人知道为什么会出现这个问题吗?我现在已经在这个问题上停留了很长时间,还没有找到任何解决方案。
由于
编辑1:
我到目前为止发现的是get(hObject,'String')返回的值;和编码为handles.fileName = 'default'
的字符串;不完全一样。我已将行disp(['fileName: ' handles.fileName])
添加到回调中,它显示了与键入名称的区别或在代码中设置时:
自我输入:
fileName: test
按代码设置:
fileName:
default
编码版本以某种方式为自己添加了换行符。
编辑2:
编辑1中描述的问题是由于disp
命令错位。
编辑3 /解决方法:
似乎字符串'default'
本身就是麻烦的原因。使用其他默认值时,它可以无缝地工作。此外,当在字段中键入'default'
时,编辑本身将不再正常工作。似乎是一些错误。