Bonjour la communauté.![]()
Tout d'abord, merci à Franck pour ses explications sur mon précédent long post. (Pour info, j'ai réussi à faire ce que je voulais (charger une image et obtenir la position de la souris))
Cette fois-ci, le sujet de mon post est clair, je voudrais réaliser un décompteur de temps.
Clairement, une fois qu'une image s'affiche, je voudrais :
_soit avoir un label qui se met à jour toutes les secondes du style "il reste 5 secondes", "il reste 4 secondes", etc, en temps réel. Pendant ces 5 secondes, je veux que l'utilisateur ne puisse rien faire à part attendre. J'ai déja essayé de mettre des "sleep(1)" avec des "gtk_widget_show_all(pWindow);" un peu partout mais rien à faire : une fois que j'exécute le pgm, 5 secondes s'écoulent et je vois ma fenêtre uniquement à la fin du décompteur.
_soit éventuellement un popup qui s'ouvre et affiche pareillement "il reste x secondes" toutes les secondes. J'avoue le problème est un peu pareil, si j'arrive pas à mettre à jour un label toutes les x secondes, j'arriverai encore moins à mettre un label à jour dans un popup...![]()
Je joints un petit bout de code (sur lequel j'ai le problème expliqué) au cas ou ca peut vosu aider...
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 #include <stdlib.h> #include <gtk/gtk.h> int main(int argc,char **argv) { GtkWidget* pWindow; GtkWidget* pLabel; int cpt=5 ; gtk_init(&argc,&argv); gint val; pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "Les labels"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 300, 300); /* Creation du label */ pLabel=gtk_label_new("Hello World!"); /* On ajoute le label a l'interieur de la fenetre */ gtk_container_add(GTK_CONTAINER(pWindow), pLabel); while ( cpt >= 0 ) { val = cpt; gchar *chaine = NULL; chaine = g_strdup_printf ("%d", val); gtk_label_set_label (GTK_LABEL (pLabel), chaine); gtk_widget_show_all(pWindow); sleep(1); g_free (chaine), chaine = NULL; cpt--; } /* Affichage de la fenetre et de tout ce qu'il contient */ gtk_widget_show_all(pWindow); /* Connexion du signal /* On appelle directement la fonction de sortie de boucle */ g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main(); return EXIT_SUCCESS; }
Partager