Bonjour,
Je souhaiterai savoir s'il existe dans gtk la gestion du temps, qui pourrait permettre d'afficher une horloge dans l'interface graphique d'un programme ?
Bonjour,
Je souhaiterai savoir s'il existe dans gtk la gestion du temps, qui pourrait permettre d'afficher une horloge dans l'interface graphique d'un programme ?
Bonjour,
apparement non mais le C dispose de tout ce qu'il faut pour faire ça :
Writing a Widget Using Cairo and GTK+2.8
Writing a Widget Using Cairo and GTK+2.8, Part 2
![]()
Merci de ta réponse je vais donc plutôt m'orienter dans cette voie.
bonjour
j'ai exactement le même problème
depuis le temps j'essaye de trouver une méthode pour afficher l'heure système en temps réel sur un label en gtk mais rien
j'ai trouvé un truque avec g_timeout_add, mais comme je fais quelques tests avant de rafraîchir le label alors je perds à chaque fois quelques milisecondes mais au cumul, au bout de 3 heure je me retrouve avec 15 minutes de retard par rapport à la vraie heure système
j'ai essayé vos lien ci-dessus mais ils ne fonctionnent pas
alors, s'il vous plaît, pourriez-vous m'aider à m'en sortir ?
merci d'avance
Bonjour.
Utiliser g_timeout_add(); pour rafraîchir un widget est la bonne méthode. Par contre, il ne faut pas l'utiliser comme un timer précis. Effectivement la fonction insérée par g_timeout_add(); fait partie de la boucle principale Gtk+. Si l'IHM est lourde la période d'éxécution est variable.
Ce que je ferais, ce serait dans la fonction insérée de récupérer le temps réel pour l'afficher. Cela peut au fil du temps faire un peu "sauter" la pendule (les secondes peuvent faire des sauts) mais au final l'heure affichée est toujours la bonne.
Une autre méthode est de créer un thread indépendant mais là c'est entrer dans les problèmes de gestion de l'IHM.
Mais rien n'est impossible...
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Effectivement g_timeout_add permet de réveiller l'interface graphique au moment où elle doit mettre à jour l'heure. Mais il faut redemander au système à chaque fois l'heure réelle, car g_timeout_add ne garantit pas le temps écoulé. Si on rafraichit l'interface toutes les n secondes avec n ≥ 1, alors utiliser g_timeout_add_seconds pour économiser l'énergie. Pour mesurer le temps écoulé (pour un chronomètre par exemple) la GLib fournit GTimer. Pour obtenir l'heure complète, elle fournit GDateTime (depuis GLib 2.26).
Partager