0

我在 MATLAB 中开发了一个 GUI 界面。当我按下按钮搜索时,我看到了理想的结果。但是,当我更改文本框并再次按下搜索按钮时,它不起作用并给我以下错误:

Undefined function 'untitled2' for input arguments of type 'struct'.

Error in @(hObject,eventdata)untitled2('edit1_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback

Undefined function 'untitled2' for input arguments of type 'struct'.

Error in @(hObject,eventdata)untitled2('pushbutton16_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback

我必须重新执行所有代码!有什么方法可以重复运行 GUI?

如图所示,当我将视频 ID 更改为其他数字并按下搜索按钮时,结果不会更新。

function pushbutton16_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton16 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%pathname='C:\Users\Dr Syed Abdul Rahman\Desktop\innovation final\video detail\';
string1 = get(handles.edit1,'UserData');
fName=strcat(cd,'\Video Detail\Video Detail',string1);
fid = fopen(fName);
if fid~=-1
 s{1} = fgetl(fid);
 s{2} = fgetl(fid);
 s{3} = fgetl(fid);
 s{4} = fgetl(fid);
 s{5} = fgetl(fid);
 s{6} = fgetl(fid);
 s{7} = fgetl(fid);

set(handles.text4,'Visible','On');
set(handles.edit1,'Visible','On','String',s{1})
set(handles.edit2,'Visible','On','String',s{2})
set(handles.edit3,'Visible','On','String',s{3})
set(handles.edit4,'Visible','On','String',s{4})
set(handles.edit5,'Visible','On','String',s{5})
set(handles.edit6,'Visible','On','String',s{6})
set(handles.edit7,'Visible','On','String',s{7})
set(handles.axes4,'Visible','On');
cd './Images';
A = imread(s{1});
axes(handles.axes4)
imshow(A);

else
 set(handles.text3,'Visible','On','String','File is not exist !') 
end
4

3 回答 3

2

而不是这一行“string1 = get(handles.edit1,'UserData');”

试试这个 string1 = get(handles.edit1,'String');

于 2013-10-17T04:27:21.880 回答
1

有很多奇怪的事情发生在pushbutton16_Callback

  • 您无需'Visible','on'为所有编辑框保留设置
  • get 'String'就像 amir nemat 说的,不是'UserData'
  • 使用fullfile代替strcat
  • 别忘了fclose(fid)
  • 除非你回来,否则不要cd './Images'在回调中这样做,cd但即便如此,这也不是一个好主意,只是imread进入那条路。
  • imshow(A,'Parent',handles.axes4)而不是axes(handles.axes4); imshow(A);

此外,您可能希望将您的 GUI 重命名为untitled2. ;)

至于您为什么会收到错误,我不确定,但我怀疑当您gui_mainfcn尝试运行回调时,它正在运行其他东西。检查其他MATLAB 可执行文件: .fevaluntitled2.muntitled2which -all untitled2

于 2013-10-17T06:50:08.977 回答
0

你的问题可能是你在使用时更改了你的工作文件夹:

cd './Images';

可能的更正可能是:

oldPath = cd('./Images'); % Return the path that you were before
A = imread(s{1});
axes(handles.axes4)
imshow(A);

cd(oldPath);  % Go back in the folder with all your functions
于 2013-11-14T08:10:41.150 回答