如何在 Perl Tk 中更改标签中的数据?
How do I change the data in a label in Perl Tk?
我正在尝试使用 Tk 创建一个程序,它将从一个条目中获取数据,然后单击一个按钮,创建一个包含该数据的标签。
下面是我一直在调试的代码。在调试的过程中,我试过tb]geh如下:
- 使用对
$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])
。这显然不是我想要的,我想知道如何才能达到我想要的效果。
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;
我正在尝试使用 Tk 创建一个程序,它将从一个条目中获取数据,然后单击一个按钮,创建一个包含该数据的标签。
下面是我一直在调试的代码。在调试的过程中,我试过tb]geh如下:
- 使用对
$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])
。这显然不是我想要的,我想知道如何才能达到我想要的效果。
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;