我正在尝试使用Tk创建一个程序,该程序将从条目中获取数据,然后单击按钮,创建一个包含该数据的标签。
下面是我一直在调试的代码。在调试过程中,我尝试了以下方法:
$printItem
的引用-command
的子例程转到子例程use Tk; use strict; use warnings;
$mw = MainWindow -> new;
my $printItem = $mw -> Entry(-width = 20); $printItem -> pack;
$mw -> Button(-text => "Write.", -command => sub{ $mw -> Label(-text => "$printItem") -> pack} -> pack;
MainLoop;
当我单击按钮时,标签显示的全部是Tk::Entry=HASH([seemingly random hexadecimal number here])
。显然这不是我想要的,我想知道如何获得想要的效果。
答案 0 :(得分:2)
Tk::Entry=HASH(0xdeadbeef)
是Perl字符串化对象的方式。实际上,您的$printItem
变量存储了一个类Tk::Entry
的对象:
my $printItem = $mw -> Entry(-width = 20);
要从Tk::Entry小部件获取字符串,可以使用其get
method:
... -command => sub { $mw->Label(-text => $printItem->get)->pack } ...
完整的工作示例:
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new;
my $printItem = $mw->Entry(-width => 20); $printItem->pack;
$mw->Button(-text => "Write.", -command => sub { $mw->Label(-text => $printItem->get)->pack })->pack;
MainLoop;