Bonjour à tous et à toutes,
petit soucis technique, dans mon programme j'ai un bon nombre de GtkEntry, pour renseigner tout un tas de valeurs,
dans un premier temps j'avais opté d'utiliser le signal 'activated' du GtkEntry pour récupérer mes données,
cela oblige à presser la touche entrée à chaque étape qui me permet de lire la valeur entrée et d'actualiser son affichage dans le GtkEntry.
Seulement voilà je suis un fatigué de cette procédure, j'ai donc décidé d'essayé de changer cela,
en utilisant le signal 'changed' associé au widget GtkEditable, seulement il y a un hic, exemple:
Avant:
après
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 G_MODULE_EXPORT void on_ax_activate (GtkEntry *Entry) { const gchar *str; char value[50]; double val; str=gtk_entry_get_text (EntryGtk); val = atof(str); printf ("a.x= %lf\n", val); sprintf(value,"%lf",val); gtk_entry_set_text (EntryGtk, (const gchar *)value); }
Dans le premier cas, après avoir entré la valeur "1" dans mon GtkEntry puis pressé la touche entrée la valeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 G_MODULE_EXPORT void on_ax_changed (GtkEditable *Editable) { const gchar *str; char value[50]; GtkEntry * EntryGtk; double val; EntryGtk = (GtkEntry *) gtk_builder_get_object (BuilderGtk, "a.x"); str=gtk_entry_get_text (EntryGtk); val = atof(str); printf ("a.x= %lf\n", val); sprintf(value,"%lf",val); gtk_entry_set_text (EntryGtk, (const gchar *)value); }
est bien sauvée en mémoire et l'affichage du GtkEntry est actualisé pour passé à "1.0000000".
Dans le second cas (sans presser la touche entrée) si je tape 1 au clavier l'affichage change immédiatement dans le GtkEntry
ce que je souhaite mais au lieu d'obtenir "1.0000000" je récupère "10.000000" (valeur également stockée en mémoire).
Que se passe t'il entre le moment où je tape "1" et l'actualisation de l'affichage qui peut expliquer l'erreur ?
(J'ai pris "1" comme exemple mais cela reste valable peu importe la valeur saisie)
Partager