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

How do I change the data in a label in Perl Tk?

我正在尝试使用 Tk 创建一个程序,它将从一个条目中获取数据,然后单击一个按钮,创建一个包含该数据的标签。

下面是我一直在调试的代码。在调试的过程中,我试过tb]geh如下:

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])。这显然不是我想要的,我想知道如何才能达到我想要的效果。

Tk::Entry=HASH(0xdeadbeef) 是 Perl 字符串化对象的方式。实际上,您的 $printItem 变量存储 class Tk::Entry:

的对象
my $printItem = $mw -> Entry(-width = 20);

Tk::Entry widget, you can use its 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;