Forum Programmation.perl Question sur Perl-Gtk !

Posté par  .
Étiquettes : aucune
0
4
avr.
2005
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  (site web personnel) . Évalué à 3.

    Après avoir fait des changements gtk qu'on veut afficher alors qu'on va prendre tout le CPU, il faut demander à gtk d'afficher les changements :

    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  . Évalué à 2.

      En effet, bienvenue dans le monde merveilleux de la programmation des threads et des soucis qui en découlent !

      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  (site web personnel) . Évalué à 2.

        En effet, bienvenue dans le monde merveilleux de la programmation des threads et des soucis qui en découlent !

        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  . Évalué à 2.

          Je n'ai pas fait de Ruby, donc je ne m'étendrai pas, mais si les threads sont de vrais threads et sont pris en charge par l'interpréteur, alors le « problème » existe toujours : Il est simplement masqué.

          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  (site web personnel) . Évalué à 2.

      POE est un framework en perl pur pour faire du multitache cooperatif

      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.