perl/tk : mise à jour du curseur

Le
Manuel Pégourié-Gonnard
Bonjour,

Je débute en Perl/Tk, et suis confronté à un problème qui est sans doute
très basique : j'ai un programme qui, avant de lancer un traitement un
peu long, fait

$main->configure(-cursor=>'watch');

où $main est la fenêtre principale. Bizarrement, le curseur ne change
pas avant que le traitement long soit terminé et que la fenêtre de
résultat s'affiche, ce qui est donc parfaitement inutile.

J'imagine qu'il doit falloir faire quelque chose pour que le changement
de curseur soit pris en compte, genre re-dessiner la fenêtre principale,
mais je n'arrive pas à trouver ça rapidement.

Je suis sûr que pour plusieurs contributeurs ici c'est évident :-)

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #21489002
À (at) Fri, 2 Apr 2010 17:47:01 +0200 (CEST),
Manuel Pégourié-Gonnard
Je débute en Perl/Tk, et suis confronté à un problème qui est sans doute
très basique : j'ai un programme qui, avant de lancer un traitement un
peu long, fait

$main->configure(-cursor=>'watch');

où $main est la fenêtre principale. Bizarrement, le curseur ne change
pas avant que le traitement long soit terminé et que la fenêtre de
résultat s'affiche, ce qui est donc parfaitement inutile.

J'imagine qu'il doit falloir faire quelque chose pour que le changement
de curseur soit pris en compte, genre re-dessiner la fenêtre principale,
mais je n'arrive pas à trouver ça rapidement.



Pour faire cela, il vaut mieux utiliser les méthodes 'Busy' et 'Unbusy'
de Tk::Widget. On peut spécifier le curseur à utiliser mais c'est
'watch' par défaut.

--
Paul Gaborit - Perl en français -
Manuel Pégourié-Gonnard
Le #21499632
Paul Gaborit scripsit :

Pour faire cela, il vaut mieux utiliser les méthodes 'Busy' et 'Unbusy'
de Tk::Widget. On peut spécifier le curseur à utiliser mais c'est
'watch' par défaut.



Merci pour ton conseil, c'est donc ce que j'utilise maintenant. Du coup,
ça m'a aussi fait penser à lire un peu perldoc Tk::Widget (j'aurais du y
penser avant, mais bon). J'y ai trouvé l'option -recurse qui, expérience
faite, résoud mon problème initial. Je ne suis pas sûr de bien
comprendre pourquoi, en fait, mais comme il paraît que la nuit porte
conseil, j'y réfléchirai demain :-)

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Paul Gaborit
Le #21499862
À (at) Mon, 5 Apr 2010 00:23:22 +0200 (CEST),
Manuel Pégourié-Gonnard
Merci pour ton conseil, c'est donc ce que j'utilise maintenant. Du coup,
ça m'a aussi fait penser à lire un peu perldoc Tk::Widget (j'aurais du y
penser avant, mais bon).



C'est un petit défaut des modules Tk : la documentation est un peu
fragmentée (mais elle est quand même complète) si bien qu'on ne trouve
pas toujours tout de suite ce qu'on cherche.

J'y ai trouvé l'option -recurse qui, expérience faite, résoud mon
problème initial. Je ne suis pas sûr de bien comprendre pourquoi, en
fait, mais comme il paraît que la nuit porte conseil, j'y réfléchirai
demain :-)



Un simple appel à 'update' (après 'Busy' ou 'configure') est sans doute
suffisant...

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme