开发者

User input in a matlab GUI

Hey all, I am building a gui in wich there is an edit box, waiting for the user to write a name.

Currently I force the user to give a legitimate name with this code :

NewPNUName = get(handles.nameOfNewPNU, 'String');
if ( isempty(NewPNUName) ||...
        strcmp(NewPNUName,'Enter the name fo开发者_StackOverflow中文版r the new PNU') )
    errordlg('Please enter a name for the new PNU.');
elseif (~ischar(NewPNUName(1)))
    errordlg('The PNU name should start with a letter.');
else
    handles.NewPNUName = NewPNUName;
end

if (~isempty(handles.NewPNUName))
% Do all the things needed if there is a legit name
end

What it does is nothing if the user didn't write a legit name. What I want it to do is to make a popup with an edit box, asking the user to input the wanted name again, until it is a legitimate name.

Thanks for the help!

EDIT: following @woodchips advice I corrected my code to the foloowing:

NewPNUName = get(handles.nameOfNewPNU, 'String');
ValidName = ~isempty(NewPNUName) && isletter(NewPNUName(1)) &&...
    ~strcmp(NewPNUName,'Enter the name for the new PNU');
while (~ValidName)

    if ( isempty(NewPNUName) ||...
            strcmp(NewPNUName,'Enter the name for the new PNU') )
        NewPNUName = char(inputdlg('Please enter a name for the new PNU.','No name entered'));
    elseif (~isletter(NewPNUName(1)))
        NewPNUName = char(inputdlg('The name of the new PNU should start with a letter. Please enter a new name',...
            'Invalid name entered'));
    else
        allConds = 'are met'
    end

    ValidName = ~isempty(NewPNUName) && isletter(NewPNUName(1)) &&...
        ~strcmp(NewPNUName,'Enter the name for the new PNU');
end


So, put a while loop around a block of code, that generates an inputdlg box. Set the condition on the while loop to be that the result is a valid one.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜