IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Appel d'un Callback par une fonction


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut Appel d'un Callback par une fonction
    Bonjour,

    Je ne pense pas que l'intitulé de mon problème soit clair mais je vais essayer d'expliquer cela plus précisément. En effet, je souhaite contrôler des fonctions par des "PushButton" mais également les appeler à certaines conditions dans d'autre fonction de mon script. Bref le plus simple est de mettre une version simplifiée de mon script:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    function main
    hFig=figure('units','normalized','outerposition',[0 0.05 1 0.95],'Name','TOTO','NumberTitle','off','toolbar','figure');
    graph=axes('Units','normalized','position',[0.25 0.1 0.69 0.82],'Tag','Onglet_7');
    
    quad1=uicontrol('Style', 'pushbutton', ... 
      'String', 'Quadrillage 1','Value',0, ... 
      'Units','normalized','Position',  [0.015 0.44 0.047 0.07], ... 
      'Callback', @quadrillage1);
    
    couleur_defaut=get(quad1,'BackgroundColor');
    quad2=uicontrol('Style', 'pushbutton', ... 
    'String', 'Quadrillage 2','Value',0, ... 
    'Units','normalized','Position',  [0.072 0.44 0.047 0.07], ... 
    'Callback', @quadrillage2);
    
    quad3=uicontrol('Style', 'pushbutton', ... 
    'String', 'Quadrillage 3','Value',1,'BackgroundColor',[91/255 157/255 255/255], ... 
    'Units','normalized','Position',  [0.129 0.44 0.047 0.07], ... 
    'Callback', @quadrillage3);
    
    
    tata=uicontrol('Style', 'pushbutton', ... 
    'String', 'Surprise', ... 
    'Units','normalized','Position',  [0.5 0.5 0.1 0.1], ... 
    'Callback', @test);
    
    
    function quadrillage1(src,evt)
        try
           set(quad2,'Value',0);
           set(quad3,'Value',0);
           set(quad1,'BackgroundColor',[91/255 157/255 255/255])
           set(quad2,'BackgroundColor',couleur_defaut)
           set(quad3,'BackgroundColor',couleur_defaut)
           disp(couleur_defaut)
           grid off
        catch
            msgbox('Erreur de code')
        end
    end 
    function quadrillage2(src,evt)
        try
           set(quad1,'Value',0);
           set(quad3,'Value',0);
           set(quad2,'BackgroundColor',[91/255 157/255 255/255])
           set(quad1,'BackgroundColor',couleur_defaut)
           set(quad3,'BackgroundColor',couleur_defaut)
           grid off
           grid on
        catch
            msgbox('Erreur de code')
        end
    end
    
    function quadrillage3(src,evt)
        try
           set(quad1,'Value',0);
           set(quad2,'Value',0);
           set(quad3,'BackgroundColor',[91/255 157/255 255/255])
           set(quad1,'BackgroundColor',couleur_defaut)
           set(quad2,'BackgroundColor',couleur_defaut)
           grid minor
        catch
            msgbox('Erreur de code')
        end
    end
    
    
    function test(src,evt)
        plot(magic(5));
        colorblue=[91/255 157/255 255/255];
        a=get(quad2,'BackgroundColor')-colorblue;
        if a==0
            disp('I''m in the loop')
            set(quad2,'Callback', @quadrillage2)
        end
    end
    end
    Dans ce script je souhaite, lorsque le bouton "Quadrillage 2" est enclenché et que l'on appuie sur le bouton "Surprise" le graphique s'affiche avec le "Quadrillage 2" (partie du code en rouge). (C'est une version très simplifiée du programme principal).

    Merci par avance de votre aide.

    Florian

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il suffit simplement d'appeler la fonction quadrillage2 comme une fonction normale.
    n'utilisant pas les paramètres, ton appel peut se résumer à : quadrillage2().
    ou dans le cas contraire : quadrillage2(quad2,[])

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup de cette réponse, qui est bien plus simple que ce que je pensais .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter un élément à une vBox par une fonction callback
    Par thhomas dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 18/01/2010, 09h55
  2. Ajouter un label à une box en passant par une fonction CALLBACK
    Par lolotomik dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 12/05/2009, 19h51
  3. script appellé par une fonction aveugle aux workspace
    Par Zhitoune dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 16/12/2008, 17h07
  4. Appel d'une séquence sonore par une fonction
    Par Henri dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 05/11/2007, 01h55
  5. Réponses: 6
    Dernier message: 09/01/2007, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo