2017-02-14 3 views
0

J'ai créé une table qui contient une colonne "Clé", une colonne "Valeur" et une colonne "Nouvelle valeur" comme indiqué dans l'image ci-dessous. Les colonnes "Key" et "Value" sont implémentées en tant qu'étiquettes, la colonne "Value" est encapsulée comme vous pouvez le voir. La colonne "Nouvelle valeur" est implémentée en tant que widget d'entrée car elle devrait être modifiable. Il existe un bouton Copier & Coller qui copie la valeur dans le champ Entrée "Nouvelle valeur". Je voudrais envelopper le texte dans le widget Entrée, donc après avoir appuyé sur le bouton, il ressemblera au texte dans le champ "Valeur".Perl TK - Renvoyer du texte dans un widget d'entrée

Image that shows the table I built and the difference between the wrapped Label to the text in the Entry field

Voici le morceau de code qui définit les colonnes affichées:

 my $key_label = $table->Label(-text => $key , -width => 50, -bg => $background_color, -anchor => 'w', -relief => $relief_style, -wraplength => 300)->pack(-side => 'left'); 
     $table->put($curr_row,1,$key_label); 
     my $orig_val_label = $table->Label(-text => $full_cfg_hash{$key}{'old_value'}, -width => 50, -bg => $background_color, -anchor => 'w', -relief => $relief_style, -wraplength => 300)->pack(-side => 'left'); 
     $table->put($curr_row,2,$orig_val_label); 
     my $new_val_entry = $table->Entry(-text => $full_cfg_hash{$key}{'new_value'}, -width => $entry_size, -bg => $background_color)->pack(-side => 'left', -fill => 'both', -expand => 'yes'); 
     $table->put($curr_row,3,$new_val_entry); 
     my $copy_paste_btn = $table->Button(-text => "Copy & Edit\nOld Value", -command => [\&copy_n_edit_old_value,$full_cfg_hash{$key}{'old_value'},$new_val_entry], -bg => $buttons_background, -foreground => $buttons_text_color)->pack(-side => 'left', -padx => 5); 
     $table->put($curr_row,4,$copy_paste_btn); 

Répondre

0

Le Tk :: Texte widget est pour la saisie de texte sur plusieurs lignes, généralement combiné avec Tk: : Scrolled, quelque chose comme:

my $new_val_entry = $table->Scrolled(
    'Text', 
    -width  => 40, 
    -height  => 3, 
    -wrap  => 'word', 
    -scrollbars => 'e', 
    -font  => $my_font, 
)->pack(
    -expand => 1, 
    -fill => 'both', 
    -padx => 5, 
    -pady => 5, 
); 
+0

Merci Stefan! L'utilisation de Tk :: Text a résolu le problème. – Eliad1983