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 :

Création d'un interface graphique


Sujet :

Interfaces Graphiques

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Création d'un interface graphique
    Bonjour à toutes et à tous, j'ai un projet à finir pour le 7 Avril, mais j'ai énormément de mal à le terminer, et à comprendre les demandes de mon tuteur. Nom : interface.JPG
Affichages : 2487
Taille : 65,8 Ko

    Voici ce à quoi ressemble mon interface.

    Le professeur me demande que lorsque je clique sur "Ouvrir", une fenêtre "parcourir" s'ouvre. J'ai réussi ! Mais j'ai énormément de mal à récupérer les données du fichier sélectionné !! De plus, il me demande que lorsque je clique sur "cancel" sur la fenêtre parcourir, un message "aucun fichier" s'affiche juste à côté du bouton "ouvrir". Donc, j'ai des difficulté à lire mon fichier à partir de mon interface graphique, et à afficher ce message "aucun fichier". S'il vous plaît, j'ai besoin d'aide !

    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
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    %[filename pathname] = uigetfile({'*.txt'},'Choisir un fichier');
    %if isequal(filename,0) | isequal(pathname,0)
    %disp('User pressed cancel')
    %text=sprintf([num2str(i) 'Reessayer ! l\n']);
    %set(handles.edit5, 'String', text)
    %disp(['User selected ', fullfile(pathname, filename)])
    %end
    %fullpathname = strcat (pathname, filename);
    %set(handles.edit5, 'String', fullpathname)
    %[filename] = uigetfile({'*.txt'},'Choisir un fichier');
    %fprintf('Tu as demandé : %s\n', filename);
    %wh=which(filename);
    %if exist(filename, 'file') == 2
    %    fprintf('Ouvrir dans Matlab: %s\n', filename);
    %    edit(filename);
    %    set(handles.edit5, 'String')
    %    eiseif ~isempty(wh)
    %    fprintf('Ouvrir dans Matlab : %s\n', wh);
    %    edit(wh);
    %    set(handles.edit5, 'String', wh)
    %else
    %    warning('MATLAB:fileNotFound',...
    %            'File was not foud : %s', filename);
    %        text=sprintf([num2str(i) 'Reessayer ! l\n']);
    %        set(handles.edit5, 'String', text)
     
    [filename, pathname, filterindex] = uigetfile( ...
    {  '*.txt','MAT-files (*.mat)'; ...
       '*.*',  'All Files (*.*)'}, ...
       'Choisir un fichier', ...
       'MultiSelect', 'on');
     
    load('ANALOG.txt');
    load('DELTA.txt');
     
    %filename
    % Création de la structure de données 
    data = struct('name', [], 'file', [], 'value', []);
     
    % Sauvegarde dans le workspace de la fenêtre
    setappdata(handles.figure1, 'Data', data);
     
    for i_file = 1:length(filename) 
        data = getappdata(handles.edit5, 'Data');
        data.file = fullfile(pathname, filename{i_file});
        data.value = load(data.file);
     
        % Sauvegarde dans le workspace de la fenêtre
        setappdata(handles.edit5, 'Data', data);
    end
    Voici le dossier zip dans lequel vous trouverez mes codes. J'ai vraiment besoin de votre aide, merci.
    test.zip

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Concernant l'affichage d'un message sans choix de fichier. A ajouter sous l'appel à la fonction uigetfile dans le code de ton pushbutton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (filename == 0) 
        set(handles.edit,'string','Aucun fichier');
        return;
    end
    Avec handles.edit l'identifiant de ton edit box.

    Pour ce qui est de la lecture de ton fichier, il nous faut connaitre la structure du fichier (nombre de colonne, lignes...).

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je te remercie. En fait, on a pas le chiffre exacte des lignes/colonnes de chacun des fichiers. Ils ont tous le même nom de fichier et la même extension mais les données sont différentes. C'est encore plus compliqué que ce que je pensais. J'ai regardé énormément de tuto mais j'ai encore du mal à comprendre. J'ai mis un dossier zip dans lequel tu trouveras les codes si tu es intéressé pour m'aider. En tout cas, la première réponse que tu m'a envoyé m'a aidé.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Sans plus d'infos sur tes fichiers à lire, difficile de t'aider davantage.

    Tu trouveras en pièce jointe un exemple d'interface qui permet la lecture des données d'un fichier texte selon la forme suivante :
    - un entête de plusieurs lignes de caractères
    - un entête d'une ligne qui contient le nom des colonnes
    - plusieurs colonnes de nombres séparées les unes des autres par des tab

    Un fichier texte exemple est fourni.

    Il te faut spécifier le nombre de colonnes ainsi que le nombre total de lignes d'entête. Seule la dernière ligne d'entête est conservée afin de nommer les différentes colonnes. La lecture du fichier est réalisée au moment du clic souris sur le bouton en question.

    J'ai essayé de faire au plus simple, ça devrait pouvoir t'aiguiller.

    Exemple.zip

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je te remercie, je vais regarder afin de mieux comprendre

    En ce qui concerne mes fichiers, voici en exemple, deux de mes fichiers à charger.
    Je t'envoie les deux fichiers dont j'ai toujours besoin, mais ce fichier ne correspond qu'à une personne, on en a plus de 50 mais avec des données différentes, ce qui complique la tâche.

    Je t'ai également envoyé mes codes au premier message.

    fichiers.zip

    fichiers.zip

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour cher ami,

    Je viens tout juste d'effectuer la modification de mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    [filename pathname] = uigetfile({'*.txt'},'Choisir un fichier');
    fullpathname = strcat (pathname, filename);
    set(handles.edit5, 'string', fullpathname)
     
    if (filename == 0)
        set(handles.edit5,'string','Aucun fichier');
        return;
    end
    Cela m'affiche bien le chemin de mon fichier .txt et lorsque je ne sélectionne aucun fichier, cela m'affiche bien "aucun fichier".
    Je tiens, tout d'abord, à te remercier pour ton aide.

    Mais j'ai toujours un problème pour lire directement les données à partir de mon GUI MatLAB. J'ai du mal à comprendre.

    Disons que mon fichier .txt ait 4 colonnes et 200 lignes, que faire ? Où dois-je rajouter mon code, et comment ?

    Merci

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Il te faut créer un pushbutton supplémentaire auquel tu définis la fonction callback suivante, adaptée à ton fichier de quatre colonnes sans ligne d'entête :

    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
    function Lecture(obj,event)
     
    % Nombre Colonnes %
    NbCol = 4;
     
    % Format de lecture des donnees %
    FormatLecture = repmat('%f',1,NbCol);
     
    % Recuperation nom fichier %
    filename = getappdata(0,'filename');  
     
    % Ouverture fichier %
    fid = fopen(filename,'r');    
     
    % Lecture donnees %
    Lecture = textscan(fid,FormatLecture,'delimiter','\t');
     
    % Definition des colonnes %
    A = Lecture{1};
    B = Lecture{2};
    C = Lecture{3};
    D = Lecture{4};
     
    % Transfert vers workspace (optionnel) %
    assignin('base','A',A);
    assignin('base','B',B);
    assignin('base','C',C);
    assignin('base','D',D);
     
    % Fermeture fichier %
    fclose(fid);                   
     
    end
    En prenant soin d'avoir ajouté dans le code du pushbutton qui sert à choisir le fichier (et dont le callback fait appel à la fonction uigetfile) la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setappdata(0,'filename',filename);
    Si tu souhaites lire plusieurs fichiers, il te faudra autant de boutons choix du fichier, d'editbox pour y afficher le nom du fichier correspondant et de boutons pour la lecture.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Je viens de rajouter un pushbutton pour la lecture, j'ai ensuite entré le code que tu m'a fournit. J'ai également ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setappdata(0,'filename',filename);
    à la fonction callback de mon bouton qui me permet de choisir quel fichier ouvrir.

    Mais cela ne fonctionne pas, et je ne comprend pas pourquoi. Voici l'erreur
    Error using textscan
    Invalid file identifier. Use fopen to generate a valid file identifier.

    Error in TEST>pushbutton8_Callback (line 1177)
    Lecture = textscan(fid,FormatLecture,'delimiter','\t');

    Error in gui_mainfcn (line 96)
    feval(varargin{:});

    Error in TEST (line 42)
    gui_mainfcn(gui_State, varargin{:});

    Error in @(hObject,eventdata)TEST('pushbutton8_Callback',hObject,eventdata,guidata(hObject))


    Error while evaluating uicontrol Callback
    De plus, ce que je souhaite obtenir comme résultat :
    Lorsque je choisi un fichier .txt , je vais pouvoir récupérer les données, puisque c'est avec ces données que je vais pouvoir afficher mes courbes.
    Le soucis, c'est que pour le moment, je peux afficher mes courbes sur chacun des axes, mais je DOIS ouvrir mon dossier dans lequel se trouve mes fichiers .txt sur MatLAB et non à partir de mon GUI (interface graphique). Que faire ?

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Peux-tu poster en pièce jointe ton code avec les modifications apportées ?

    Le soucis, c'est que pour le moment, je peux afficher mes courbes sur chacun des axes, mais je DOIS ouvrir mon dossier dans lequel se trouve mes fichiers .txt sur MatLAB et non à partir de mon GUI (interface graphique). Que faire ?
    Pas compris.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord, je tiens à te remercier pour ton aide !

    Je dois terminer ce projet avant Jeudi 07 Avril, et j'ai énormément de retard, malheureusement.
    Le problème lié à cette fenêtre "parcourir" est énorme, puisque je dois absolument l'avoir fait avant ce jeudi; cela fait partie du cahier des charges.

    Je vais t'expliquer ce que je souhaite obtenir grâce à ce bouton parcourir :

    En cliquant sur le bouton "ouvrir le fichier" une fenêtre s'ouvre afin de choisir le fichier que l'on souhaite charger.
    Quand je fais ceci, la fenêtre s'ouvre bien, et je peux sélectionner le fichier que je veux charger. De plus, à coté, j'ai mis un "edit text" pour m'afficher le chemin du fichier choisis. Et lorsque je ne sélectionne aucun fichier, cela me l'affiche correctement.

    Le problème, c'est que je dois OBLIGATOIREMENT charger le dossier dans lequel se trouve mes fichiers sur MATLAB comme la capture-dessous :
    Nom : matlab01.JPG
Affichages : 1696
Taille : 40,2 Ko

    Alors que moi, je voudrais pouvoir lire les données de mon fichier et charger les données à partir de mon interface graphique grâce au bouton "ouvrir le fichier"

    Voici mes codes ci-dessous avec un des dossiers qui contient les fichiers que je dois analyser ("ANALOG.txt" ou "DELTA.txt)

    TEST.zip

    Je te remercie par avance. En espérant m'être bien exprimé et expliqué.

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Bonsoir,

    Si j'ai bien saisi, tu souhaites lancer ton gui à partir d'un dossier et lire tes fichiers texte qui se trouvent dans un second dossier.

    A rajouter dans le callback du bouton 'Ouvrir le fichier' la ligne en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [filename pathname] = uigetfile({'*.txt'},'Choisir un fichier');
    fullpathname = strcat (pathname, filename);
    set(handles.edit5, 'string', fullpathname)
    
    if (filename == 0)    
        set(handles.edit5,'string','Aucun fichier');    
        return;
    end
    
    cd(pathname);
    Elle permet de définir le dossier courant. Celui contenant tes fichiers texte en l’occurrence.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Je tiens à vous remercier pour l'aide que vous m'avez apporté ! Sans vous, je n'y serais pas arrivé malgré mes nombreuses recherches sur le net.

    MERCI INFINIMENT !

Discussions similaires

  1. Création d'une interface graphique un peu poussée
    Par Ivenoproblemwiththat dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 04/01/2008, 17h00
  2. Création d'une interface graphique
    Par sieuzac dans le forum Développement 2D, 3D et Jeux
    Réponses: 14
    Dernier message: 30/05/2007, 21h43
  3. création d'une interface graphique
    Par dz_robotix dans le forum Linux
    Réponses: 1
    Dernier message: 18/04/2007, 12h52
  4. Aide création tableau dans interface graphique
    Par craps78 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 03/04/2007, 18h59
  5. [Swing] Création d'une interface graphique SWING + MVC
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2006, 10h03

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