MATLAB: Pause de programme et d'attendre la pression de touche
Je suis en train d'écrire un programme qui, à un certain point, un graphe est tracé et affichée sur l'écran. L'utilisateur doit ensuite appuyez sur la touche 'y' ou 'n' pour accepter ou rejeter le graphique. Ma solution actuelle utilise le PsychToolbox (la solution réelle n'a pas besoin d'), qui inclut une commande appelée "KbCheck' qui vérifie au moment de l'appel de l'état de tous les boutons du clavier. Mon code ressemble à ceci:
function [keyPressed] = waitForYesNoKeypress
keyPressed = 0; % set this to zero until we receive a sensible keypress
while keyPressed == 0 % hang the system until a response is given
[ keyIsDown, seconds, keyCode ] = KbCheck; % check for keypress
if find(keyCode) == 89 | find(keyCode) == 78 % 89 = 'y', 78 = 'n'
keyPressed = find(keyCode);
end
end
Le problème, c'est que le système n'a vraiment "bloquer" jusqu'à ce qu'une touche est enfoncée. Idéalement, je voudrais être en mesure de faire défiler, zoomer, et généralement interagir avec les graphes sont tracés à l'écran afin que je puisse vraiment décider si oui ou non je veux appuyez sur la touche 'y' ou 'n'!
J'ai essayé d'ajouter 'drawnow;" dans la boucle while ci-dessus mais qui ne fonctionne pas: je ne suis toujours pas en mesure d'interagir avec les courbes graphiques jusqu'à après j'ai accepté ou rejeté.
La solution de ne pas avoir à utiliser de PsychToolbox; je suppose que il ya beaucoup d'autres options là-bas?
Grâce
Ce serait une solution adaptée, bien que je préfère pour le rendre plus convivial; c'est à dire avec le "clavier", à accepter les graphiques que j'aurais du type "nom de la variable = 'y'; return;"
À l'aide de la 'input', fonction, vous n'avez qu'à écrire o ou n, mais il ne reqiure appuyez sur la touche entrée.
OriginalL'auteur CaptainProg | 2012-02-16
Vous devez vous connecter pour publier un commentaire.
J'utiliserais
input
fonction:Bien que, certes, il nécessite deux touches (y puis Entrée) plutôt celui.
OriginalL'auteur Chris Taylor
Pourquoi ne pas utiliser
waitforbuttonpress
à la place?Documentation: http://www.mathworks.fr/help/techdoc/ref/waitforbuttonpress.html
figure(42); waitforbuttonpress; close(figure(42));
Merci de le signaler dans un commentaire. Je suppose que maladroit est un peu loin pour aller enlevé ce à partir de la réponse. Toutefois, si vous ne souhaitez pas ouvrir un chiffre, par exemple travailler avec des matrices d'apparaître dans la fenêtre de commande, j'allais encore à la pause: mais dans le cas de vouloir arrêter une figure par étapes pour examiner les changements, je dirais que
waitforbuttonpress
est un bon de commande.OriginalL'auteur Oli
Attendre buttonpress ouvre une figure, qui peuvent être indésirables. Utiliser à la place
qui permet à l'utilisateur de mettre en pause jusqu'à ce qu'une touche est enfoncée.
OriginalL'auteur patrik
Vous ne souhaitez pas utiliser
waitforbuttonpress
depuis il verrouille la figure gui (pas de zoom, de panoramique, etc).pause
peut causer de la fenêtre de commande pour voler l'attention de la figure.La solution que j'ai trouver la meilleure solution pour ouvrir la figure avec une valeur null keyPressFcn afin d'éviter des problèmes de focus:
et puis d'attendre pour CurrentCharacter changement de propriété:
OriginalL'auteur Tal
Attendre à une touche ou un bouton de souris cliquez sur:
Exemple:
pour plus d'informations, visitez:
http://www.mathworks.com/help/matlab/ref/waitforbuttonpress.html
OriginalL'auteur user3041840
La waitforbuttonpress commande est bonne, mais est déclenchée soit par un clic de souris ou appuyez sur une touche. Si vous voulez qu'il déclenche uniquement à partir d'une pression sur une touche, vous pouvez utiliser ce hack:
OriginalL'auteur user1988213