Bonjour,
je développe une application scientifique et je rencontre un problème de rafraichissement de fenêtre.
Avant de lancer un calcul (couteux en temps CPU) je crée et lance une fenêtre pop-up qui doit dire à l'utilisateur 'Calcul en cours'.
Tout semble fonctionner, la fenêtre s'ouvre et disparaît une fois le calcul terminé .. le problème rien ne s'affiche dans celle ci.
Voici le code que j'utilise pour créer ma fenêtre pop-up:
et:
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 GtkWidget * show_pop (char * pop, GtkWidget * pwin) { GtkWidget * wpop; GtkWidget * label; GtkWidget * hpop; GtkWidget * imgpop; wpop = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (wpop, 600, 80); gtk_window_set_position (GTK_WINDOW (wpop), GTK_WIN_POS_CENTER); gtk_window_set_resizable (GTK_WINDOW (wpop), FALSE); gtk_window_set_transient_for (GTK_WINDOW (wpop), GTK_WINDOW (pwin)); gtk_window_set_title(GTK_WINDOW(wpop), "Information"); hpop = gtk_hbox_new (FALSE, 0); gtk_widget_show (hpop); gtk_container_add (GTK_CONTAINER (wpop), hpop); imgpop = gtk_image_new_from_stock ("gtk-execute", GTK_ICON_SIZE_BUTTON); // gtk_widget_set_size_request (imgpop, 20, 20); gtk_widget_show (imgpop); gtk_box_pack_start (GTK_BOX (hpop), imgpop, TRUE, TRUE, 0); label = gtk_label_new (pop); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hpop), label, TRUE, TRUE, 0); return (wpop); }
Dans cet exemple je ne traite qu'une seule configuration (mon programme peut en traiter plusieurs peu importe ce qu'est une configuration).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... pop=show_pop ("Calculation in progress", win); gtk_widget_show_all(pop); ...
Dans le cas où je traite plusieurs configurations je créer la même fenêtre pop-up en incluant cette fois une barre de défilement qui se remplie
en fonction du traitement des configurations ... dans ce 2ème cas tout fonctionne parfaitement et toutes les informations sont affichées.
Dans le cas de la barre de défilement j'utilise la fonction:
Pour rafraîchir, actualiser l'affichage de la fenêtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part while (gtk_events_pending()) gtk_main_iteration();
J'ai essayé d'appliquer la même technique dans le premier cas (pour lequel je souhaite simplement notifier l'utilisateur qu'un calcul est en cours
et dans lequel j'ai uniquement enlevé la barre de défilement).
Cependant impossible d'afficher un label ou une image dans cette fenêtre pour ce cas apparemment plus simple (sans barre de défilement).
La fenêtre est bien créée mais rien n'y figure ... et rien ne change en essayant de rafraîchir l'affichage GTK+ à l'aide de la fonction gtk_main_iteration().
Une suggestion ?
Partager