2017-10-19 4 views
0

Je viens de commencer à Perl Tk et j'ai eu un coup d'œil sur quelques tutoriels mais j'ai un problème. Lorsque je clique sur un bouton, il affiche sur l'entrée le widget scalaire que je veux. Il fonctionne, mais lorsque je clique sur un autre temps, il garde ce qui a été écrit sur l'entrée. Donc j'ai deux bonjour. Je sais qu'il vient d'insertion (0, « Bonjour ») mais je ne pas quoi mettre à la place de 0.Mettre à jour une entrée en Perl Tk

#!/usr/local/bin/perl 
use Tk; 

my $mw = MainWindow->new; 
$mw->geometry("500x350+0+0"); 
$mw->title("Report Information about a Protein of Interest"); 

my ($bite) = $mw -> Label(-text=>"Enter the uniprot accession number:")->grid(-row => 0, - column => 0); 
my ($ent) = $mw->Entry()->grid(-row => 0, - column => 1, -columnspan => 2, -sticky => 'nsew'); 
    $ent2 = $mw->Button(-text=> "Search", -command => \&push_button)->grid(-row => 1, - column => 0); 

MainLoop; 

#This is executed when the button is pressed 
sub push_button { 
    $ent -> insert(0,"Hello, "); 
} 

Répondre

1

La méthode insert pour un texte insère un widget Tk::Entry après la position actuelle du curseur d'insertion; supprimer le texte existant dans le widget avant d'insérer pouvez faire:

sub push_button {  
    $ent -> delete(0, 'end'); # clears the widget 
    $ent -> insert(0,"Hello, "); 
}