begin process at 2008 08 29 22:26:25
1 233 909 membres
430 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN NOMBRE À CALCULER


Information sur la source

Catégorie :GTK+ Niveau : Débutant Date de création : 26/05/2005 Date de mise à jour : 13/01/2006 07:57:19 Vu : 3 814

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Voici un petit programme très simple, mettant en oeuvre les principes de base de GTK+ (2.4 au moins).
Avec une fonction Callback associée au bouton de validation du calcul.
Attention, j'ai mis tous les widgets en variables globales, c'est plus simple
dans un premier temps pour les débutants...

(Bientôt, je mettrais aussi sur ce site une calculatrice complète et fonctionnelle
en GTK+ 2.4).
Bonne étude...

Source

  • #include <gtk/gtk.h>
  • #include <stdlib.h>
  • #include <string.h>
  • // ligne à utiliser pour la compilation sous Linux :
  • // gcc nombre_a_calc.c -o nombre_a_calc.exe `pkg-config --cflags --libs gtk+-2.0`
  • GtkWidget *fenetre;
  • GtkWidget *vbox;
  • GtkWidget *lab_calcul_a_faire;
  • GtkWidget *entry_resultat;
  • GtkWidget *bout_valider;
  • GtkWidget *lab_infos;
  • gint a, b, c;
  • void preparer_un_nouveau_calcul(void);
  • void verification(GtkWidget *widget, gpointer data);
  • int main(int argc, char **argv)
  • {
  • gtk_init(&argc, &argv);
  • fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  • gtk_widget_set_size_request (fenetre, 300, 200);
  • gtk_window_set_title (GTK_WINDOW (fenetre), "Trouver la valeur");
  • g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
  • vbox = gtk_vbox_new (TRUE, 10);
  • gtk_container_add (GTK_CONTAINER (fenetre), vbox);
  • gtk_container_set_border_width (GTK_CONTAINER (vbox), 20);
  • lab_calcul_a_faire = gtk_label_new ( "un calcul" );
  • gtk_box_pack_start (GTK_BOX (vbox), lab_calcul_a_faire, FALSE, FALSE, 0);
  • preparer_un_nouveau_calcul();
  • entry_resultat = gtk_entry_new ();
  • gtk_box_pack_start (GTK_BOX (vbox), entry_resultat, FALSE, FALSE, 0);
  • bout_valider = gtk_button_new_with_label("Valider votre réponse");
  • gtk_box_pack_start (GTK_BOX (vbox), bout_valider, FALSE, FALSE, 0);
  • g_signal_connect(G_OBJECT(bout_valider),"clicked",G_CALLBACK(verification), NULL);
  • lab_infos = gtk_label_new("Tentez une réponse !");
  • gtk_box_pack_start (GTK_BOX (vbox), lab_infos, FALSE, FALSE, 0);
  • gtk_widget_show_all(fenetre);
  • gtk_main();
  • return EXIT_SUCCESS;
  • }
  • void preparer_un_nouveau_calcul(void)
  • {
  • srand(time(NULL));
  • a = rand() % 5;
  • b = rand() % 5;
  • c = a*b;
  • gtk_label_set_text(GTK_LABEL(lab_calcul_a_faire),
  • g_strdup_printf ("Calculez %d x %d =", a, b) );
  • }
  • void verification(GtkWidget *widget, gpointer data)
  • {
  • const gchar *result_recupere;
  • gint resultat;
  • result_recupere = gtk_entry_get_text(GTK_ENTRY(entry_resultat));
  • resultat=atoi(result_recupere);
  • if(resultat==c)
  • {
  • gtk_label_set_text(GTK_LABEL(lab_infos),"Bonne réponse ! Recommencez...");
  • }
  • else {
  • gtk_label_set_text(GTK_LABEL(lab_infos),"Mauvaise réponse ! Ré-essayez...");
  • }
  • preparer_un_nouveau_calcul();
  • gtk_entry_set_text(GTK_ENTRY(entry_resultat),"");
  • }
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>

// ligne à utiliser pour la compilation sous Linux :
// gcc nombre_a_calc.c -o nombre_a_calc.exe `pkg-config --cflags --libs gtk+-2.0`

  GtkWidget *fenetre;
  GtkWidget *vbox;
  GtkWidget *lab_calcul_a_faire;
  GtkWidget *entry_resultat;
  GtkWidget *bout_valider;
  GtkWidget *lab_infos;

gint a, b, c;

void preparer_un_nouveau_calcul(void);
void verification(GtkWidget *widget, gpointer data);

int main(int argc, char **argv)
{
  gtk_init(&argc, &argv);

  fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (fenetre, 300, 200);
  gtk_window_set_title (GTK_WINDOW (fenetre), "Trouver la valeur");
  g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);

  vbox = gtk_vbox_new (TRUE, 10);
  gtk_container_add (GTK_CONTAINER (fenetre), vbox);
  gtk_container_set_border_width (GTK_CONTAINER (vbox), 20);

  lab_calcul_a_faire = gtk_label_new ( "un calcul" );
  gtk_box_pack_start (GTK_BOX (vbox), lab_calcul_a_faire, FALSE, FALSE, 0);
  preparer_un_nouveau_calcul();

  entry_resultat = gtk_entry_new ();
  gtk_box_pack_start (GTK_BOX (vbox), entry_resultat, FALSE, FALSE, 0);

  bout_valider = gtk_button_new_with_label("Valider votre réponse");
  gtk_box_pack_start (GTK_BOX (vbox), bout_valider, FALSE, FALSE, 0);
  g_signal_connect(G_OBJECT(bout_valider),"clicked",G_CALLBACK(verification), NULL);

  lab_infos = gtk_label_new("Tentez une réponse !");
  gtk_box_pack_start (GTK_BOX (vbox), lab_infos, FALSE, FALSE, 0);

  gtk_widget_show_all(fenetre);
  gtk_main();

  return EXIT_SUCCESS;
}

void preparer_un_nouveau_calcul(void)
{
  srand(time(NULL));
  a = rand() % 5;
  b = rand() % 5;
  c = a*b;

gtk_label_set_text(GTK_LABEL(lab_calcul_a_faire),
                   g_strdup_printf ("Calculez %d x %d =", a, b) );
}

void verification(GtkWidget *widget, gpointer data)
{
const gchar *result_recupere;
gint resultat;

result_recupere = gtk_entry_get_text(GTK_ENTRY(entry_resultat));

resultat=atoi(result_recupere);

if(resultat==c)
     {
     gtk_label_set_text(GTK_LABEL(lab_infos),"Bonne réponse ! Recommencez...");
     }
else {
     gtk_label_set_text(GTK_LABEL(lab_infos),"Mauvaise réponse ! Ré-essayez...");
     }

preparer_un_nouveau_calcul();

gtk_entry_set_text(GTK_ENTRY(entry_resultat),"");
}



Conclusion

Voilà, en espérant que cela serve aux débutants...

Calogero GIGANTE

http://www.gigante.be/
13 janvier 2006 07:57:19 :
...
  • signaler à un administrateur
    Commentaire de petifa le 03/06/2005 09:50:21

    Ton code est assez simple en soit et peut permettre de voir un peu le fonctionnement de GTK,
    C'est vrai mettre en global c'est pas terrible. Dans ce cas le programme n'est pas long donc ca va.
    Jpeu pas tester le prog je n'ai plus GTK, je ne m'en sert plus. J'ai fait quelques programmes avec mais je préfère Qt.
    Bon code lan meme et bon site internet ;) (http://www.langagec.be/)

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS