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