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 :

Barre de progression


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 64
    Points : 39
    Points
    39
    Par défaut Barre de progression
    Bonjour,

    Je réalise un lecteur audio sur Matlab avec une interface graphique.
    J'aimerais afficher une barre de progression, pour savoir où en est la musique et pouvoir aller directement à un endroit.
    Je pensais utiliser un slider.
    J'arrive à récupérer à quel endroit en est la musique et la durée totale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c=get(pl,'CurrentSample');
    t=get(pl,'TotalSamples');
    Le problème est que je ne vois pas comment "mettre à jour" en temps réel le slider.

    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut
    salut,

    il faut mettre a jour la propriété "value" de ton slider

    un petit exemple qui j'espère pourra t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    h_fig= figure(15);
    h_slid = uicontrol(h_fig,'style','slider','Position',[100 100 300 20]);
    music = 1;
    temps = 0;
    temps_total = 180;
    while music == 1;
        temps = temps+1
        pause(0.1)
        set(h_slid,'Value',temps/temps_total);
        if temps == temps_total
            music = 0;
        end
    end

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 64
    Points : 39
    Points
    39
    Par défaut
    Merci

    Mais le problème est que si je "m'enferme" dans la boucle, je ne peux plus lancer d'événements (comme un pause) non ?

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut
    si, tu peux, mais bon c'est un peu tordu.

    Par exemple, tu peux dans ta boucle aller checker une propriété qui a été modifiée par l'appui sur un bouton (via les fameux callback/appdata). un petit exemple issu d'un truc un peu analogue que j'avais fait il y a longtemps :

    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
     
    h_fig= figure(15);
    h_slid = uicontrol(h_fig,'style','slider','Position',[100 100 300 20]);
    h_pause = uicontrol(h_fig,'style','pushbutton','Position',[200 200 50 50],'string','Pause','callback',@cllbk_pause);
    h_play = uicontrol(h_fig,'style','pushbutton','Position',[300 200 50 50],'string','Play','callback',@cllbk_play);
    music = 1;
    play = 1;
    setappdata(h_fig,'playpause',play)
    temps = 0;
    temps_total = 100;
    while music == 1;
        pause(0.1)
        play = getappdata(h_fig,'playpause');
        while play ==1
            play = getappdata(h_fig,'playpause');
            temps = temps+1;
            pause(0.1)
            set(h_slid,'Value',temps/temps_total);
            if temps == temps_total
                music = 0;
                play = 0;
            end
        end
    end
    avec les callbacks

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function cllbk_pause(h_object,~)
    h_fig = get(h_object,'Parent');
    setappdata(h_fig,'playpause',0);
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function cllbk_play(h_object,~)
    h_fig = get(h_object,'Parent');
    setappdata(h_fig,'playpause',1);
    end
    après pour tout ce qui est de la gestion manuelle du slider, je sais pas franchement, mais tu peux t'inspirer de ça :
    http://undocumentedmatlab.com/blog/c...ider-callback/
    Le code que je te propose ci-dessus est sans doute largement optimisable.

Discussions similaires

  1. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 13h15
  2. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 09h56
  3. Réponses: 12
    Dernier message: 27/05/2004, 00h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 16h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 12h56

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