Tengo poco tiempo programando en Perl y estoy realizando una aplicación gráfica utilizando TK. En ésta quiero enviar un texto almacenado en un arreglo a otra ventana al presionar el botón, la otra ventana está definida en una función aparte. Entonces el problema que se me presenta es que al colocar la llamada a la función en el botón, ésta se ejecuta de manera automática al iniciar el programa, abriendo el mismo número de ventanas que hay de botones y después al dar clic en algún botón me muestra un mensaje de error:
Using perl Syntax Highlighting
- use strict;
- use Tk;
- my $mw=MainWindow->new;
- my @arreglo =('hola','mundo','todos','hoy');
- my @botones=();
- my $i=0;
- for($i=0;$i<9;$i++){
- $botones[$i]=$mw->Button(
- -text=>$i,
- #linea cambiada por sugerencia de explorer
- #-command=>\&ventana($i)
- -command=>sub{ ventana ($i)}#nueva linea que si realiza la llamada a la funcion
- )->pack();
- }
- MainLoop;
- sub ventana{
- my $in=@_;
- my $pop = MainWindow->new;
- my $etiqueta = $pop->Label(
- -text => 'Escogiste: '.$in
- )->pack();
- }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
El mensaje de error es:
Tk::Error: Not a CODE reference at C:/Perl64/site/lib/Tk.pm line 250.
Tk callback for .button3
Tk::__ANON__ at C:/Perl64/site/lib/Tk.pm line 250
Tk::Button::butUp at C:/Perl64/site/lib/Tk/Button.pm line 175
<ButtonRelease-1>
(command bound to event)