glade
Lorenzo Gil Sanchez
lgs en sicem.biz
Mie Ago 20 21:26:33 CEST 2003
El mi?, 20-08-2003 a las 20:31, dvilla en gmx.net escribi?:
Hola:
>
> Alguien sabe si el signal_autoconnect() de libglade se puede utilizar de modo
> que los callbacks sean m?todos no-de-clase. Este ejemplo me funciona:
>
> import pygtk
> pygtk.require("2.0")
>
> import gtk, gtk.glade
>
> class Application:
> def __init__(self):
> self.widgets = gtk.glade.XML(gladefile)
> self.widgets.signal_autoconnect(Application.__dict__)
>
> def on_button1_clicked(widget, event):
> print 'hola'
>
>
> Pero si on_button1_clicked() no es un m?todo de clase, es decir:
>
> def on_button1_clicked(self, widget, event):
> print 'hola'
>
> Entonces el autoconnect no se entera y llama a este m?todo con 2 argumentos en
> lugar de tres. Alguien sabe si se puede hacer?
>
> Veamos, tienes un fallo en lo siguiente: El callback para la senial 'clicked' [1] es el siguiente
def callback(button):
pass
o si es un metodo de clase
def callback(self, button):
pass
Por eso en tu ejemplo te funciona el metodo para una clase porque tienes la suerte de estar dandole 2 argumentos:
def on_button1_clicked(widget, event):
print hola
si haces esto
def on_button1_clicked(widget, event):
print widget, event
probablemente te des cuenta que tu argumento widget es en realidad de tipo Application y tu argumento event es de tipo gtk.Button
Despues de todo este rollo te respondo a tu pregunta:
import pygtk
pygtk.require('2.0')
import gtk
import gtk.glade
def on_button1_clicked(button):
print 'hola'
widgets = gtk.glade.XML(gladefile)
widgets.autoconnect(locals())
No se si me he explicado bien
Lorenzo Gil
[1] http://www.moeraki.com/pygtkreference/pygtk2reference/class-gtkbutton.html#signal-gtkbutton--clicked
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es