如何在win32 gui perl中获取文本字段数据

如何在win32 gui perl中获取文本字段数据,perl,textfield,Perl,Textfield,嗨,我想在变量中存储textfield数据,但我的代码不起作用 这是我的密码 use Win32::GUI qw<>; my $W1 = Win32::GUI::Window->new( -name => "W1", -title => "First Window", -pos => [ 100, 100 ], -size => [ 300, 200 ], ); $W1->AddButton( -name => "But

嗨,我想在变量中存储textfield数据,但我的代码不起作用 这是我的密码

use Win32::GUI qw<>;

my $W1 = Win32::GUI::Window->new(
 -name  => "W1",
 -title => "First Window",
 -pos   => [ 100, 100 ],
 -size  => [ 300, 200 ],
);

$W1->AddButton(
 -name => "ButtonW1",
 -text => "Enter Chipname",
 -pos  => [ 87, 100 ],
 #-ok  => 1,
);

 $W1->AddTextfield(
  -name    => "chipfield",
  -left    =>  20,
  -top     =>  40,
  -width   => 250,
  -height  => 20,
   #  -prompt => ["Mix ",30],
  );

$W1->Show();
Win32::GUI::Dialog();
exit(0);


sub W1_Terminate { return -1; }

sub ButtonW1_Click {
    my $chipname = $W1->chipfield->Text();
    print $chipname;
}
使用Win32::GUI qw;
my$W1=Win32::GUI::Window->new(
-名称=>“W1”,
-title=>“第一个窗口”,
-pos=>[100100],
-大小=>[300200],
);
$W1->AddButton(
-名称=>“按钮1”,
-text=>“输入芯片名”,
-pos=>[87100],
#-ok=>1,
);
$W1->AddTextfield(
-name=>“chipfield”,
-左=>20,
-top=>40,
-宽度=>250,
-高度=>20,
#-prompt=>[“混合”,30],
);
$W1->Show();
Win32::GUI::Dialog();
出口(0);
子W1_终止{return-1;}
子按钮1\u单击{
my$chipname=$W1->chipfield->Text();
打印$chipname;
}

请帮助我问题在哪里
在此处输入代码

看起来像是缓冲问题。加上$|=1;在打印$chipname之前;声明,一切都会好起来的,就像这样:

my $chipname = $W1->chipfield->Text();
$|=1;
print $chipname;
或者按照阿克塞曼的建议去改变

print $chipname;


您可能还想看看这篇文章:

看起来像是“Win32::GUI::Window类”的销毁处理问题

my$W1=Win32::GUI::Window->new(
-名称=>“W1”,
-title=>“第一个窗口”,
-pos=>[100100],
-大小=>[300200],
);
...
$W1->Show();
Win32::GUI::Dialog();

未定义美元W1;我运行了它,它工作了。我将print语句更改为
print“\$chipname='$chipname'\n”
,然后退出
$chipname='ABC'
。有什么问题吗?我确实收到了投诉:“在全局销毁期间,无法对未定义的值调用方法“存储”。,但并非每次都是如此。您是对的,您的解决方案对我来说运行良好,但它给了我一个错误“在全局销毁期间,无法对未定义的值调用方法“存储”。”当我在谷歌搜索后关闭W1窗口时,这个错误就出现了。现在我使用$chipfield_name->GetLine(0);这对于mee来说很好,并且不会在全局销毁期间对未定义的值给出“不能调用方法”STORE“。错误类型。感谢您的回复:)@amit,不客气:)代码在我的计算机(ActiveState Perl 5.10.0 WinXP SP3)上正常工作并退出,没有“无法调用方法存储”错误。是的,GetLine(0)也可以完成任务。
print $chipname,"\n";
my $W1 = Win32::GUI::Window->new(
 -name  => "W1",
 -title => "First Window",
 -pos   => [ 100, 100 ],
 -size  => [ 300, 200 ],
);
...

$W1->Show();
Win32::GUI::Dialog();
undef $W1;       <-----Addtion line
exit(0);