Matlab uigetdir函数失败,除非我暂停执行

时间:2018-06-19 15:23:17

标签: matlab pause pausing-execution

我已经用这种结构(伪代码)构建了图像浏览器

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

我知道这是一个简单/不太肮脏的解决方案,但我想知道为什么会这样。

谢谢。

0 个答案:

没有答案