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 :

Problème avec GUI sous GUIDE


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Homme Profil pro
    M2
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : M2

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Problème avec GUI sous GUIDE
    Bonjour à tous,

    Première expérience avec GUIDE je me retrouve confronté à un problème à priori tout bête mais que je n'arrive pas à régler.
    J'ai plusieurs valeurs pour lesquelles je permet à l'utilisateur de les définir dans des "edit".
    Ces valeurs ont un rôle à jouer dans une fonction associée à un "popupmenu" dont voici le 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
    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
    function PopUpMenu_Callback(hObject, eventdata, handles)
    % hObject    handle to PopUpMenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global Dm M
    str = get(hObject, 'String');
    val = get(hObject, 'Value');
    switch str{val}
        case 'Moore_Neighborhood'
            Nn = str2double(get(handles.Nn_value, 'string'));
            Dm = [1 1 1;1 0 1;1 1 1]/Nn;
        case 'Uniform'
            u = str2double(get(handles.u_value, 'string'));
            nD = str2double(get(handles.n_value, 'string'));
            [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
            Unif = ((nD+1-I).^2+(nD+1-J).^2)<u*nD;
            Unif(nD+1,nD+1) = 0;
            Dm = Unif./sum(sum(Unif));
        case 'Exponential'
            a = str2double(get(handles.sig_value, 'string'));
            nD = str2double(get(handles.n_value, 'string'));
            [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
            Ex = exp(-a*(abs(nD+1-I)+abs(nD+1-J)));
            Ex(nD+1,nD+1) = 0;
            Dm = Ex./sum(sum(Ex));
        case 'Gaussian'
            sig = str2double(get(handles.sig_value, 'string'));
            nD = str2double(get(handles.n_value, 'string'));
            [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
            Ga   = exp(-((nD+1-I).^2+(nD+1-J).^2)/(2*sig.^2));
            Ga(nD+1,nD+1) = 0;
            Dm = Ga./sum(sum(Ga));
        case 'Gamma'
            theta = str2num(get(handles.theta_value, 'String'));
            [n,m] = size(M);
            k = 1;
            nD = n;
            [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
            X = [abs(nD+1-J)+abs(nD+1-I)];
            Gm = gampdf(X,k,theta);
            Gm(nD+1,nD+1) = 0;
            Dm = Gm./sum(sum(Gm));
    end
    il s'agit donc des valeurs Nn u a sig theta.

    Voici mon soucis : Quand je change run mon programme avec une valeur de theta par exemple, associé au cas "Gamma" du popupmenu, si ensuite je stop mon programme, je change theta et que je le run de nouveau, le changement de valeur ne va pas être pris en compte. Pour que celui-ci soit pris en compte il faut que je re-sélectionne "Gamma" dans le popupmenu avec que cette option est déjà celle sélectionnée.

    J'ai essayé de déplacer à différent endroit la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    theta = str2num(get(handles.theta_value, 'String'));
    pour faire en sorte que la valeur soit redéfinie à chaque fois sans avoir à re-sélectionner l'option dans le popupmenu mais sans succès.

    Une idée pour corriger ce petit soucis ? J'espère que j'ai réussi à être clair
    Merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    M2
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : M2

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je relance mon post mais pour un autre problème.
    Mon GUI permet d'afficher deux plots différents, seulement ceux-ci n'ont pas la même taille. Si je commence par afficher le plus petit puis le plus grand tout va bien. En revanche si j'affiche d'abord le plus grand, puis je relance ensuite pour visualiser le plus petit celui-ci s'affiche en petit par-dessus le plus grand en haut à gauche.
    J'aimerai savoir comment faire pour que le plot actif garde toujours la même dimension au milieu de l'interface, qu'importe le plot affiché précédemment ?

Discussions similaires

  1. Problème avec GUI sous netbeans 6.9
    Par stc074 dans le forum NetBeans
    Réponses: 1
    Dernier message: 09/03/2011, 01h05
  2. Problème avec EInOutError sous delphi 2005
    Par Teb dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2005, 11h48
  3. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33
  4. Problème avec glutFullScreen() sous linux...
    Par MaxPayne dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/11/2004, 11h30
  5. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02

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