Bonjour,
J'ai fait un petit programme en Perl-Gtk. J'ai un bouton "Envoyer" et j'aimerais que le clic sur ce bouton affiche un Label du genre "patienter..." et le cache sur un evenement (pour moi Valeur 1 dans une base SQL).
J'ai donc fait :
----
while($valeur==0){
$label-show();
$valeur= result_interrogation_sql();
}
$label-hide();
Mon problème c'est quand je met cela en place le clic sur le bouton il reste enfoncé et mon label ne s'affiche jamais. La situation se débloque quand $valeur=1 :-(.
Merci pour vos idées.
# yo
Posté par gc (site web personnel) . Évalué à 3.
Gtk(2?)->main_iteration while Gtk->events_pending;
Par contre il faut savoir que si ce temps est long et que la fenêtre est cachée puis réapparait, elle ne sera pas redessinée vu que Gtk ne pourra pas réafficher. Si ton truc qui prend tout le CPU dispose d'un callback appelable régulièrement, tu peux mettre la ligne ci-dessus, mais sinon, tu ne peux pas t'en sortir si tu n'utilises pas du multithread ou multiprocessus (entre le thread/proc qui s'occupe de gtk et celui qui fait le calcul intensif).
[^] # Re: yo
Posté par Obsidian . Évalué à 2.
Ceci dit, si l'on peut éviter d'utiliser un thread pour tout et n'importe quoi, c'est aussi bien. Le multitâche coopératif est extrêmement bénéfique lorsqu'on l'implémente au sein d'un même programme ...
[^] # Re: yo
Posté par gc (site web personnel) . Évalué à 2.
Bah, ça dépend. En Ruby par exemple, l'implémentation des threads est entièrement dans l'interpréteur, on a donc aucun problème de synchro avec les bibliothèques sous-jacentes.
[^] # Re: yo
Posté par Obsidian . Évalué à 2.
Il est quand même bon de connaître tous les tenants et aboutissants de la chose et d'apprendre à écrire des programmes performants parce que bien conçus, avant de laisser un langage évolué faire tout le travail à la place du (prétendu) programmeur ...
[^] # POE
Posté par Mouns (site web personnel) . Évalué à 2.
il a entre autre des outils pour gerer du TK et du GTK.
ca peut t'aider pour ton dev.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.