2011-05-13 2 views
1

J'ai développé une petite application utilisant Perl/Tk. L'application va chercher des données sur le web lorsque l'un des boutons de l'application est pressé. Mais le problème est que l'interface graphique se bloque jusqu'à ce que le contrôle est retourné. Je sais que cela est dû à retarder la fenêtre principale ne répond pas. J'ai utilisé la fonction update() mais le problème persiste. Donc, je google autour et je sais que nous pouvons utiliser des discussions pour résoudre ce problème. Mais je ne suis pas sûr de savoir comment utiliser les threads dans Perl/Tk. Voici mon exemple de codeGel de l'interface graphique - Perl Tk

use warnings; 
use Tk; 

my $mw = new MainWindow; 

my $button = $mw -> Button(-text => "Fetch", 
     -command => \&FetchData) 
    -> pack(); 
MainLoop; 

sub FetchData 
{ 
//Fetching data from Web 
} 

Merci d'avance.

Répondre

3

N'ont jamais essayé ceci, mais ce PerlMonks thread from 2008 "Perl Tk and Threads" pourrait vous aider à aller de l'avant.

+0

merci pour le lien, mais nulle part en ce qu'ils parlent d'invoquer un fil quand un bouton est cliqué alors pouvez-vous s'il vous plaît dites-moi comment le faire? – Allwyn

+0

a obtenu un indice à partir du lien. Merci – Allwyn

+2

@Winbros - Eh bien, dans cette discussion sur PerlMonks, un gars appelé zentara dit ceci: "Le thread doit être créé avant que tous les widgets Tk ne soient invoqués.Vous violez cette règle en créant le thread dans un rappel de bouton." Il semble donc que vous deviez créer vos threads auparavant, puis communiquer via des variables partagées. Au moins, c'est le conseil de zentara. – Lumi

Questions connexes