perl - 如何在 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
变量存储了一个类对象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;
推荐阅读
- java - SQLite的简单select语句耗时2秒以上
- virtualization - WinNAT服务启动失败
- ruby-on-rails - Ruby on Rails - 从 has_and_belongs_to 访问子关系
- sql - 平均查询 ORA-00936 错误
- java - 我可以将 2 个线程的操作与空锁对象同步吗?
- windows - UWP console app with no icon, just execution alias
- css - 雅虎邮件的 css 解析器从 html 中删除 box-sizing,如何解决这个问题?
- java - 删除 JetInstance 作业
- javascript - 每个实例是否都会创建一个新方法,该方法在构造函数中定义?
- drools - 可执行模型规则的运行时创建和持久性