首页 > 解决方案 > 如何在 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]). 这显然不是我想要的,我想知道如何才能达到我想要的效果。

标签: perltk

解决方案


Tk::Entry=HASH(0xdeadbeef)是 Perl 如何对对象进行字符串化。实际上,您的$printItem变量存储了一个类对象Tk::Entry

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

要从Tk::Entry小部件中获取字符串,可以使用它的get方法

... -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;

推荐阅读