El vie, 18-11-2005 a las 11:37 -0300, Alejandro Valdes Jimenez escribió: > El vie, 18-11-2005 a las 11:25 -0300, Germán Poó Caamaño escribió: > > El vie, 18-11-2005 a las 11:17 -0300, Alejandro Valdes Jimenez escribió: > > > gracias... ya habia revizado esos ejemplos, excepto los de la página... > > > sin embargo tengo otra duda. > > > > > > he tenido que usar el signal_autoconnect_from_package para las señales, > > > lo que no me gusta mucho pues debo definir las llamadas en el glade y > > > por eso mismo no he podido pasarle un objeto determinado a la llamada. > > > > Puedes utilizar: > > $button->signal_connect (clicked => sub { print 'foo'; }); > > lo extraño es que se tiene que escribir toda la funcionalidad ahi, al > parecer no se puede hacer algo como: > > $button->signal_connect (clicked => una_funcion(parametros));
Estas llamando la función y el resultado se lo quieres asignar como elemento a clicked. Y lo que te interesa es pasar una referencia a la función, de tal forma que se pueda ejecutar cuando ocurra la señal clicked. > habra que acostumbrase a meter todo el código ahi. Te falta leer algún texto básico sobre Perl[1] :-) Esa es la forma de escribir la función en línea; pero también puedes invocar a una función pasando la referencia a el. $button->signal_connect (clicked => \&una_funcion, $parametro); La cantidad de parámetros es limitada, tal como lo es cuando usas la API en C, Python o lo que sea, dado que es una señal y la señal tiene una cantidad determinada de parámetros, algunos opcionales. > lo intente con el glade pero nada.... asi que lo estoy haciendo como lo > indicas arriba. Imprimiste todo lo que recibías en @_? (hint: usa foreach). [1]: Learning Perl y luego, Programming Perl; ambos de la serie de O'Reilly. Aunque también hay buenos tutoriales en Internet. También puedes ver: http://gtk2-perl.sourceforge.net/doc/intro/ -- Germán Poó Caamaño http://www.ubiobio.cl/~gpoo/ Concepción - Chile