2011-05-27 5 views
1

Salut à tous, Je suis en train de construire un GUI dans lequel il y a une boîte d'édition, en attendant que l'utilisateur écrive un nom.Entrée d'utilisateur dans une interface graphique MATLAB

Actuellement je force l'utilisateur de donner un nom légitime avec ce code:

NewPNUName = get(handles.nameOfNewPNU, 'String'); 
if (isempty(NewPNUName) ||... 
     strcmp(NewPNUName,'Enter the name for 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 

Ce qu'il fait est rien si l'utilisateur n'a pas écrit un nom légitime. Ce que je veux qu'il fasse est de faire un popup avec une boîte d'édition, en demandant à l'utilisateur d'entrer à nouveau le nom désiré, jusqu'à ce que ce soit un nom légitime.

Merci pour l'aide!

EDIT: @woodchips après conseil que je corrige mon code à la 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 

Répondre

1

Alors, mettez une boucle while autour d'un bloc de code, qui génère une boîte de inputdlg. Définissez la condition sur la boucle while comme étant que le résultat est valide.

+0

Merci, j'ai maintenant mis à jour mon code en conséquence. – Yarok

Questions connexes