我是Tk / Perl的新手。下面是我使用tk / perl创建的简单GUI界面。
以下是创建此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();
}
我想让数字用户输入Text(22,23,24,25,26)来处理我的子程序,但是我无法从shift中获取它 - >得到()。任何方式我可以让所有数字用户输入文本小部件?谢谢你的帮助
答案 0 :(得分:1)
get()
对象的Tk::Text
方法的正确语法在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;