2010-04-05 37 views
0

您好,我想存儲文本框在一個變量的數據,但我的代碼是不工作 這裏是我的代碼如何讓Win32的GUI perl的文本字段數據

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

請幫我在哪裏的問題enter code here

+0

我跑了,它的工作。我將打印語句更改爲'print'\ $ chipname ='$ chipname'\ n「',然後拿出'$ chipname ='ABC''。有什麼問題?我確實收到了一個投訴:「在全球銷燬期間,不能調用方法」STORE「作爲未定義的值。」,但不是每次。 – Axeman 2010-04-05 05:11:18

回答

0

看起來像緩衝問題。添加$ | = 1;打印$ chipname之前;聲明,一切都會好起來的,像這樣:

my $chipname = $W1->chipfield->Text(); 
$|=1; 
print $chipname; 

或者做什麼斧頭兵建議通過改變

print $chipname; 

print $chipname,"\n"; 

你可能也想看看這篇文章: Suffering from Buffering?

+0

你是對的,你的解決方案對我來說工作正常,但它給了我一個錯誤 「無法在全局銷燬期間對未定義值調用方法」STORE「。 這個錯誤來當我關閉我的W1窗口 谷歌搜索後 現在我使用$ chipfield_name-> GetLine(0); 對於我來說工作正常,並且在全局銷燬期間未給出「無法調用方法」STORE「的未定義值。」類型的錯誤。 感謝您的回覆:) – amit 2010-04-05 06:26:06

+0

@amit,不客氣:)代碼工作並在我的電腦(ActiveState Perl 5.10.0 WinXP SP3)沒有「無法調用方法存儲」錯誤退出罰款。 GetLine(0)也可以完成工作。 – Mike 2010-04-05 07:11:36

0

看起來像是一個摧毀「Win32 :: GUI :: Window C lass「

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); 
相關問題