Est-il possible d'écrire une interface graphique à l'intérieur d'une fonction?Comment créer une interface graphique à l'intérieur d'une fonction dans MATLAB?
Le problème est que le rappel de toutes les fonctions GUI est évalué dans l'espace de travail global. Mais les fonctions ont leur propre espace de travail et ne peuvent pas accéder aux variables dans l'espace de travail global. Est-il possible de faire en sorte que les fonctions de l'interface graphique utilisent l'espace de travail de la fonction? Par exemple:
function myvar = myfunc()
myvar = true;
h_fig = figure;
% create a useless button
uicontrol(h_fig, 'style', 'pushbutton', ...
'string', 'clickme', ...
'callback', 'myvar = false');
% wait for the button to be pressed
while myvar
pause(0.2);
end
close(h_fig);
disp('this will never be displayed');
end
Cette boucle d'événement sera exécuté indéfiniment, car le rappel ne modifiera pas myvar
dans la fonction. Au lieu de cela, il va créer un nouveau myvar
dans l'espace de travail global.
OP devra changer la variable de sortie en quelque chose d'autre et créer "global myvar" dans l'espace de travail de base pour que cela fonctionne. – Azim
Est-ce vraiment le seul moyen? Il semble que ce soit un peu franc d'utiliser les variales mondiales pour le travail. – bastibe
C'est la meilleure façon dont je suis arrivé - je suis d'accord c'est un peu moche, je ne pense pas que le modèle de l'interface graphique de Matlab soit très bon. Vous pourriez vouloir vérifier le code dans la contribution de uitable (?) Sur Mathworks. Le site est en panne à la minute. –