2017-07-28 4 views
0

Tk/Perlを初めて使用しています。以下は、tk/perlを使って作成した簡単なGUIインタフェースです。以下テキストウィジェットに入力したすべての単語を配列に取得する

GUI INTERFACE

コードの一部であり、このGUIを作成します。

$f2_label=$f_frame_top0->Label(-text=>"File",-font=>[-family=>'MS Sans Serif',-size=>9,-weight=>'bold',-underline=>0],-justify=>'left')->pack(-side=>'left',-anchor=>'w',-padx=>1,-pady=>1,); 
$f2_entry=$f_frame_top0->Entry(-width=>50,-state=>"normal")->pack(-side=>'left',-anchor=>'w',-padx=>1,-pady=>1,-fill=>'x',-expand=>1); 
$f2_file_btn=$f_frame_top0->Button(-text=>"...", -height=>1, -width=>2, -command=> [\&file_search,$tab2,$f2_entry,"TXT"])->pack(-side=>'left',-anchor=>'w',-padx=>1,-pady=>1); 

$f3_label=$f_frame_top1->Label(-text=>"Number",-font=>[-family=>'MS Sans Serif',-size=>9,-weight=>'bold',-underline=>0],-justify=>'left')->pack(-side=>'left',-anchor=>'w',-padx=>1,-pady=>1,); 
$f3_entry=$f_frame_top1->Text(-width=>10,-height=>10,-wrap=>'word',-state=>"normal")->pack(-side=>'left',-anchor=>'w',-padx=>1,-pady=>1,-fill=>'x',-expand=>1); 


$but1_close=$f_frame_bot->Button(-text=>"Close",-command=>sub {destroy $mw}) ->pack(-side=>"right",-anchor=>'e',-padx=>1,-pady=>1); 
$but1_exe=$f_frame_bot->Button(-text=>"Run",-command=>[\&fablot_fusesort,$f2_entry,$f3_entry]) ->pack(-side=>"right",-anchor=>'e',-padx=>1,-pady=>1); 

sub fablot_fusesort{ 
    my $file1 = shift -> get(); 
    my $number = shift ->get(); 
} 

は私が私のサブルーチンで処理するために、数のユーザーがテキストで入力します(22,23,24,25,26)を取得したいが、私はできないシフトからそれを得るために - >を取得()。どのように私はすべての数字のユーザーがテキストウィジェットに入力することができますか? Tk::Textオブジェクトにget()方法のため

+0

何 '私の$ numValue = $ f3_entry->取得()について;'ので、あなたは、アレイに移動することができます.... – ssr1012

+0

@ ssr1012このエラーメッセージが表示されたら "間違った#引数:" .notebook.sheet_3.frame1.text get index1?index2 " – Tim

+0

スクリプトをコンパイルするための最小サンプルのperlファイルで質問を更新してください。 – ssr1012

答えて

1

正しい構文を支援するためのおかげでTk::Textのドキュメントに記述されています

$text->get(index1, ?index2?)

リターンテキストから文字の範囲。戻り値は、インデックスが index1で、インデックスがindex2の直前で終了するテキストから始まるすべての文字です(の文字はindex2になりません)。 index2が省略された場合、 の単一文字がindex1に返されます。指定された範囲には文字 が存在しない場合(例えばindex1は、ファイルの終わりを過ぎているか index2は以下index1に等しい)、空の文字列は が引数なしでそうget()を使用して

を返されますエラーです。ここで

は、テキストを取得する方法の例です:

use strict; 
use warnings; 
use Tk; 

my $mw = MainWindow->new(); 

my $entry = $mw->Text(
    -width=>20, -height => 10, -wrap => 'word', -state => "normal" 
)->pack(
    -padx => 1, -pady => 1, -fill => 'x', -expand => 1 
); 

my $button = $mw->Button(
    -text => "Run", 
    -command=> sub { fablot_fusesort($entry) } 
)->pack(
    -padx => 1, -pady => 1 
); 

sub fablot_fusesort{ 
    my ($entry) = @_; 
    my $text = $entry->get('1.0','end'); # <-- Gets all the text in the widget 
    print "$text"; 
} 
MainLoop; 
+0

ありがとう、私は言葉を得ることができますが、私は$テストを印刷するとき、私はなぜこのエラーを表示しないのか分からない "連結での初期化されていない値の使用(。)または218行目の文字列。 – Tim

+0

素晴らしい。印刷方法を教えてもらえますか? '$ test'が空の場合(' undef')、あなたはそのエラーを取得します... –

関連する問題