Bonjour,
Je viens vers vous pour un problème que je rencontre avec un de mes scripts avec interface utilisateur sur MATLAB R2009b. J'ai réussi à résoudre le problème mais je ne comprends pas le fonctionnement latent.
Voici directement le code très simple (j'utilise une syntaxe moche mais qui fonctionne : écrire dans le callback directement les instructions en chaine de caractères) :
Je vous propose d'essayer le code directement, ce sera plus parlant. La première instruction affichera 'Tutu' quel que soit le bouton choisi alors que la deuxième (à décommenter pour essayer) affichera le nom correspondant au bouton. On dirait que la première syntaxe évalue l'expression seulement au choix du bouton alors que la deuxième le fait pendant l'exécution du code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 clear all guy(1).name = 'Tata'; guy(2).name = 'Titi'; guy(3).name = 'Toto'; guy(4).name = 'Tutu'; for i=1:length(guy) h = uicontrol('Style', 'pushbutton', 'String', guy(i).name,... 'Position', [10 5+40*(i-1) 160 35], 'Callback', 'disp(guy(i).name);'); end % for i=1:length(guy) % h = uicontrol('Style', 'pushbutton', 'String', guy(i).name,... % 'Position', [10 5+40*(i-1) 160 35], 'Callback', ['disp(''',guy(i).name,''');']); % end
Je cherche pas d'aide pour améliorer le code (utiliser des appels de fonctions etc.) mais juste à savoir si quelqu'un a une explication rationelle pour ce fonctionnement qui me parait incompréhensible (les deux chaines de caractères dans les callbacks sont censées être identiques).![]()
Partager