|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 05 Dec 2004 18:04:29 To : Yuri Kostylev Subject : Re: Tk -------------------------------------------------------------------------------- ---------- Forwarded message ---------- From: Felix Liberman <felix.liberman@gmail.com> Date: Sun, 5 Dec 2004 11:10:21 +0200 Subject: Re: Tk To: yuri.kostylev@p1.f61.n5050.z2.fidonet.org Hi Yuri, Sat 04 Dec 04 16:27 you wrote to RU.PERL: > Я торможу? > > for(1..5) { > $some_widget -> Button(-text=>"Button $_", -command=>\&pressed); > } > > sub pressed { > # как здесь узнать, на какую кнопку нажали? > # в tcl, python - элементарно... > # @_ - пусто > } А кто сказал что в callback-функцию что-то должно передаваться по-умолчанию? Вот работающий пример (частично сваял при помощи моего билдера): #!/usr/local/bin/perl -w # Callback example use strict;use Tk;use Tk::Button; my $mw=MainWindow->new(-title=>'testing callbacks'); foreach (1 .. 5){ $mw -> Button ( -text=>"Button_$_", -command=>[\&pressed,$_] ) -> pack(); } MainLoop; #===vptk end===< DO NOT CODE ABOVE THIS LINE >=== sub pressed{ my $number=shift; print "Pressed button $number at <".join("><",caller()).">\n"; } Как и в tcl создается анонимный массив, который на момент генерации объекта "button" запоминает текущее значение переменной цикла. Для более продвинутого контроля (например получения ссылки на объект "button") следует сохранять его в переменную и конфигурировать опосля: foreach (1 .. 5){ my $b = $mw -> Button ( -text=>"Button_$_" ) -> pack(); # store object in temp variable $b -> configure (-command=>[\&pressed,$b,$_] ); # configure object to refer $b -> into itself } .. sub pressed{ my ($button,$number)=@_; print "Pressed button #$number ($button)\n"; # here you can even re-colour pressed button! } -- Artem Chuprina <ran{}ran.pp.ru> --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/12192996306fe.html, оценка из 5, голосов 10
|