modificar las clases de las lib gtk

Alberto Ruiz aruiz en synaptia.net
Mie Mar 1 01:39:15 CET 2006


2006/2/28, Lionel Iturri <lionel en lisistemas.com.ar>:
>
> Ante todo hola es mi primer mensaje a la lista, y queria saber si
> alguien sabe como hacer esto, la logica esta bien, pero me da un error
> en el setattr() "TypeError: can't set attributes of built-in/extension
> type 'gtk.xxxx'"   xxxx es el nombre de gtk.Entry, gtk.Label, gtk.Button
> segun la line...
>
> #!/usr/bin/python
>
> import gtk
> import gtk.glade
>
>
> # cada clase tiene su metodo particular para leer la info
>
> def Entry_GetValue(self):
>    return self.get_text()
>
> def Label_GetValue(self):
>    return self.get_label()
>
> def Button_GetValue(self):
>    return self.get_label()
>
>
>
> setattr(gtk.Entry, 'GetValue', Entry_GetValue)
> setattr(gtk.Label, 'GetValue', Label_GetValue)
> setattr(gtk.Button, 'GetValue', Button_GetValue)
>
>
> xml=gtk.glade.XML('test.glade')
>
>
>
> # Con la lista de widget sacar el valor de cada uno
>
> for widget in xml.get_widget_prefix(''):
>    print widget.GetValue()
>
>
> print xml.get_widget('Entry').GetValue()
> print xml.get_widget('Label').GetValue()
> print xml.get_widget('Button').GetValue()
>
> gtk.main()


El error lo deja bien claro, no puedes modificar el objeto.
Podrias hacer varias cosas, crear una clase nueva que herede de GtkLabel y
demás, y renombrar.

¿Sería mucho preguntar porque quieres añadir un método que basicamente hace
lo mismo que otro existente?

Un saludo,
Alberto Ruiz




Más información sobre la lista de distribución Python-es