Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Tk   Artem Chuprina   05 Dec 2004 18:04:29 
 Re: Tk   Nikolay Pichtin   05 Dec 2004 20:46:48 
 Re: Tk   Artem Chuprina   06 Dec 2004 00:53:42 
 Re[2]: Tk   Maxim Yemelyanov   06 Dec 2004 20:34:14 
Архивное /ru.perl/12192996306fe.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional