当使用两个按钮时评估uicontrol回调时发生错误
4视图(30天)
显示旧的评论
大家好,我有一个问题我的GUI。我的程序有两个按钮,我使用第一个按钮在子文件夹选择一个特定的文件。
函数pushbutton1_Callback (hObject eventdata处理)
% hObject句柄pushbutton1(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
[文件名、路径名,filterindex] = uigetfile (…
{‘* .mat‘,“mat文件(* .mat)”;…
“* .slx; * . mdl”,”模型(*。基金,* . mdl)”;…
‘* . txt”,“文本文件(* . txt)”;…
“* *”。,所有文件(* . *)”},…
“选择文件”,…
“多选”,“上”,…
“. . \ Schaltungen \”);
如果isequal(文件名,0)
disp (用户选择:取消的)
其他的
disp ([用户选择的fullfile(路径名,文件名)))
结束
全球帧;
assignin (“基地”,“帧”文件名);
% assignin(“基地”、“路径”,路径名);
%帧= strcat(路径名,文件名);
% assignin(“基地”、“帧”,帧);
%按钮1的回调
handles.fname= fname;
guidata (hObject,处理)
当我宣布与包含按钮2
m.file
的代码
m.file
是
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
流程变量
帧
我有已经在按钮1。和回调函数的代码按钮2
函数pushbutton2_Callback (hObject eventdata处理)
% hObject句柄pushbutton2(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
全球帧;
帧=“handles.fname”;
和我的程序有错误,
错误使用textread(第165行)
文件没有找到。
错误在骗局(13号线)
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
错误在demogui > pushbutton2_Callback(第112行)
骗局
错误在gui_mainfcn(第95行)
函数宏指令(变长度输入宗量{:});
错误在demogui(42)行
gui_mainfcn (gui_State变长度输入宗量{:});
错误@ (hObject eventdata) demogui (pushbutton2_Callback, hObject、eventdata guidata (hObject))
错误而评估uicontrol回调
我不知道什么发生在这个项目。希望得到你的支持。万博1manbetx
0评论
接受的答案
杰夫•海斯
2015年12月17日
谭,我认为这个错误可能是源自第二个按钮回调你指定的地方
帧=“handles.fname”;
所以的文件
textread
将尝试读取字符串的处理。文件名”,而不是引用的文件名。包装在引用这个变量创建一个字符串的变量名。
你也不需要申报的东西
帧
作为一个全球或分配到基本工作空间。喜欢你已经显示在第一个按钮回调,只是把它作为一个字段
处理
结构。回调可以简化为
函数pushbutton1_Callback (hObject eventdata处理)
[文件名、路径名,filterindex] = uigetfile (…
{‘* .mat‘,“mat文件(* .mat)”;…
“* .slx; * . mdl”,”模型(*。基金,* . mdl)”;…
‘* . txt”,“文本文件(* . txt)”;…
“* *”。,所有文件(* . *)”},…
“选择文件”,…
“多选”,“上”,…
“. . \ Schaltungen \”);
如果isequal(文件名,0)
disp (用户选择:取消的)
handles.fname=”;
其他的
帧= fullfile(路径名,文件名);
disp ([用户选择的、帧]);
handles.fname= fname;
结束
guidata (hObject,处理)
在上面,我们保存路径和文件名
handles.fname
(如果不选择一个文件,那么这个字段设置为一个空字符串)。现在,在你的第二个回调可以访问这个文件
函数pushbutton2_Callback (hObject eventdata处理)
如果isfield(处理,“帧”)
如果~ isempty (handles.fname)
帧= handles.fname;
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
结束
结束