Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perl/tk : mise à jour du curseur

3 réponses
Avatar
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/

3 réponses

Avatar
Paul Gaborit
À (at) Fri, 2 Apr 2010 17:47:01 +0200 (CEST),
Manuel Pégourié-Gonnard écrivait (wrote):

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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Manuel Pégourié-Gonnard
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/
Avatar
Paul Gaborit
À (at) Mon, 5 Apr 2010 00:23:22 +0200 (CEST),
Manuel Pégourié-Gonnard écrivait (wrote):

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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>