как получить данные текстового поля в Win32-GUI Perl - PullRequest
0 голосов
/ 05 апреля 2010

привет, я хочу сохранить данные текстового поля в переменной, но мой код не работает, вот мой код

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

Ответы [ 2 ]

1 голос
/ 05 апреля 2010

Похоже на проблему буферизации. Добавить $ | = 1; перед печатью $ chipname; Скажите и все будет хорошо, как это так:

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

Или сделайте то, что предложил Axeman, изменив

print $chipname;

до

print $chipname,"\n";

Возможно, вы также захотите взглянуть на эту статью: Страдание от буферизации?

0 голосов
/ 11 сентября 2013

Похоже на проблему уничтожения "Win32 :: GUI :: Window Class"

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...