Crear una subclase de wxPanel en wxPython

Andres Moya Andres.Moya en hispalinux.es
Mie Mar 9 12:35:11 CET 2005


Buenas.

Hoy me toca preguntar a mí: estoy intentando crear un control nuevo en 
wxPython, que haga lo mismo que el wxPanel normal, pero añadiendole 
algunas cosillas. Y luego lo quiero usar desde un programa que lee los 
controles de un fichero de recursos .xrc

En principio se me ha ocurrido derivando directamente de wxPanel, pero 
no funciona. Navegando un poco por ahí, me doy cuenta de que lo que 
pretendo no es tan sencillo, por el tema de que los objetos wxPython son 
envoltorios de los de C++ y eso. ¿Alguien me podría decir cómo se hacen 
componentes nuevos?

Lo que he hecho hasta ahora es crear esta clase:

  from wxPython import wx

  class MiPanel(wx.Panel):
      def __init__(self, *args, **kwargs):
          wx.Panel.__init__(self, *args, **kwargs)


y luego, en el fichero de recursos, decirle que el panel es de la 
subclase que he creado:

  <object class="wxPanel" name="panelDePrueba" subclass="mimodulo.MiPanel">


Pues haciendo esto, al ejecutar el programa obtengo lo siguiente:

  Traceback (most recent call last):
    File 
"C:\ARCHIV~1\PROGRA~1\Python23\lib\site-packages\wx-2.5.3-msw-unicode\wx\xrc.py", 
line 685, in Create
      inst = klass()
    File 
"C:\ARCHIV~1\PROGRA~1\Python23\lib\site-packages\wx-2.5.3-msw-unicode\wx\_windows.py", 
line 19, in __init__
      newobj = _windows_.new_Panel(*args, **kwargs)
  TypeError: new_Panel() takes at least 1 argument (0 given)


Lo que está ocurriendo es que la función Create de xrc.py instancia mi 
objeto sin pasarle ningún parámetro, pero luego éste intenta crear el 
panel de C++ que necesita más información...
 
-- 
Andres.Moya en hispalinux.es




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