如何在Perl Tk中更改标签中的数据?

时间:2019-06-25 18:56:44

标签: perl tk

我正在尝试使用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])。显然这不是我想要的,我想知道如何获得想要的效果。

1 个答案:

答案 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;