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

 C Discussion :

Création d'une IHM en C sous Linux avec GTK


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    stagiaire reseau
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire reseau

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut Création d'une IHM en C sous Linux avec GTK
    Bonjour

    je suis actuellement sur un projet de création d'interface homme machine (IHM), je dois utiliser le langage C ainsi que la bibliothèque GTK sous linux , je dois essayer de le faire en modèle MCV.

    je doit créer une interface du même style :Nom : 15.jpg
Affichages : 1071
Taille : 683,5 Ko

    pour le moment j'ai ceci

    Nom : 15.jpg
Affichages : 1147
Taille : 349,9 Ko

    j'aimerais savoir quels sont les fonctions dans la bibliothèque gtk je peux prendre pour faire les afficheurs en noirs et comment puis je faire avec le if pour pouvoir les afficheurs si seulement le switch est on ou off.

    mon code pour if est celui ci :

    Code C : 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
    /* Gestionnaire de signal pour le signal "actif" du commutateur */
    static void
    activate_cb (GObject    *Switch,
                 GParamSpec *pspec,
                 gpointer    user_data)
    {
      GtkWindow *window = user_data;
     
       	GtkWidget *label1;
    	GtkWidget *label2;
    	GtkWidget *label3;
    	GtkWidget *label4;
    	GtkWidget *fixed;
     
      if (gtk_switch_get_active (GTK_SWITCH (Switch)))
     
    		instruction en mettant les differents afficheur ?? ;
      else 	
    		????
     
    }

    Merci de l'aide que vous m'apporterez.

    Bien cordialement.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tu devrais aller sur un forum GTK pour avoir des détails concernant cette librairie. Ici, c'est plutôt un forum dédié à ceux qui ont des soucis de syntaxe C.

    Concernant ta question "comment faire avec le if" (on a l'impression que tu considères le "if" un peu comme un ingrédient magique...) ben tu l'as bien écrit. Ne te reste qu'à remplir le bloc "then" avec l'affichage de tes éléments...

    PS: c'est quand-même un peu con qu'un "stagiaire réseau" arrive dans ce type de projet qui ne lui est pas du tout adapté...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre habitué
    Homme Profil pro
    stagiaire reseau
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire reseau

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut
    bonjour

    je suis aller voir dans la bibliothèque gtk et dans les différents tutoriel qui sont bien expliqué.

    Ce qui me bloc c'est que je ne voit pas comment faire dans else, mettre un remove ou un delete-event en suivant ceci

    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    {
      GtkWindow *window = user_data;
     
       	GtkWidget *label1;
    	GtkWidget *label2;
    	GtkWidget *label3;
    	GtkWidget *label4;
    	GtkWidget *fixed;
     
      if (gtk_switch_get_active (GTK_SWITCH (Switch))) 
    		label1 = gtk_label_new ("pesée(g)");
    		label2 = gtk_label_new ("Température (°c)");
    		label3 = gtk_label_new ("Erreurs capteur");
    		gtk_fixed_put(GTK_FIXED(fixed), label1,400,50);
    	gtk_fixed_put(GTK_FIXED(fixed), label2,700,50);
    	gtk_fixed_put(GTK_FIXED(fixed), label3,1000,50);
    	gtk_widget_set_size_request(label1, 100,80);
    	gtk_widget_set_size_request(label2, 100,80);
    	gtk_widget_set_size_request(label3, 100,80);
    	//afficheur 
      else 	
    		// ici de mettre un remove 
     
     
     
    }
    Ps: En effet , mais c'était surtout un stage (2 mois) afin de valider mon DUT.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kwxax17 Voir le message
    Ce qui me bloc c'est que je ne voit pas comment faire dans else, mettre un remove ou un delete-event
    Ben moi je programme en Qt et pas en Gtk mais ça doit pas être bien différent. Perso, ce que je fais, c'est que je crée tous mes affichages/boutons/case à cocher mais je valide et invalide celles qu'il faut en fonction des actions de l'utilisateur. Déjà c'est plus facile (setEnabled/setDisabled) mais surtout c'est bien plus ergonomique que de voir des trucs apparaitre et disparaitre et qui font croire à un bug...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre habitué
    Homme Profil pro
    stagiaire reseau
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire reseau

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut
    merci pour votre aide elle m'a bien été utiles

    en ce moment je suis entrain d'essayer de lire un fichier texte par exemeple : 455 litre sur un bouton (afficheur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    fichier = fopen("test.txt", "r");
       if (fichier != NULL)
        {
            while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
            {
                printf("%s", chaine); // On affiche la chaîne qu'on vient de lire
    			gtk_fixed_put(GTK_FIXED(fixed), fichier,420,240);
            }
     
            fclose(fichier);
        }
    d'après quelque recherche , mais rien ne ce lit.

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    D'après toi que représente fichier dans la ligne suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_fixed_put(GTK_FIXED(fixed), fichier,420,240);

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2006, 15h45
  2. [conseil]creation d'une ihm
    Par blaise_laporte dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 20/04/2006, 11h23
  3. Formater une cassette de sauvegarde sous LINUX
    Par dragonfly dans le forum Administration système
    Réponses: 10
    Dernier message: 22/03/2006, 11h02
  4. Creer une base de donnée sous linux
    Par nissarte dans le forum Installation
    Réponses: 2
    Dernier message: 01/03/2006, 14h56
  5. Attaquer une base Oracle installée sous linux
    Par lessoy dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2005, 13h54

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