我已经用这种结构(伪代码)构建了图像浏览器
function myBrowser()
loadFirstImage();
uiwait;
function handleKeyPress(~,event)
if ~(isempty(event.Character))
if(strcmp(event.Key, 'uparrow'))
%show next image
end
... %other key calls
if(strcmp(event.Key, 'r'))
generateIndividualReportData()
end
end
end
end
通过此操作,我可以浏览文件夹中的图像,并对其进行一些操作,有时需要生成报告,为此,我需要按“ r”键来调用 generateIndividualReportData()功能。
这很好,直到我在 generateIndividualReportData()
中添加了'uigetdir'调用function generateIndividualReportData() %this breaks
% do things
mydir= uigetdir(pwd, 'Choose directory where X stuff is');
addpath(mydir);
end
实际上从未调用过此uigetdir,因此随后的“ addpath”调用会产生此错误:
Error using catdirs (line 24)
All arguments must be strings.
Error in addpath (line 64)
p = catdirs(varargin{1:n});
Error in generateIndividualReportData (line 75)
addpath(mydir);
但是,如果我在'uitgetdir'调用之前暂停执行,它就像一个超级按钮。
function generateIndividualReportData() %this works
% do things
pause(1)
mydir= uigetdir(pwd, 'Choose directory where X stuff is');
addpath(mydir);
end
我知道这是一个简单/不太肮脏的解决方案,但我想知道为什么会这样。
谢谢。