[Python-es] ¿Se puede llamar una función de una Clase desde otra?

Héctor J. Benítez Corredera facturasxebolax en gmail.com
Jue Mar 14 16:35:30 EDT 2019


Hola me gustaría preguntar si se puede hacer una llamada a una clase 
desde otra clase.

E visto en distintos sitios varías maneras pero las e puesto en practica 
y algo no estoy haciendo bien.


Bien este es el código:

import wx

import threading

class VentanaPrincipal(wx.Frame):

"""Clase de la ventana principal"""

def __init__(self):

wx.Frame.__init__(self, None, title=VersionAPP )

# barra de menus

menuBar = wx.MenuBar()

menu_conf = wx.Menu()

item = menu_conf.Append(101, "&1 Hacer WIPE SYSTEM (Modo 
Recovery)\tCtrl+1", "Borra la partición SYSTEM. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipesystem, item)

item = menu_conf.Append(102, "&2 Hacer WIPE DATA (Modo 
Recovery)\tCtrl+2", "Borra la partición DATA. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipedata, item)

item = menu_conf.Append(103, "&3 Hacer WIPE CACHE (Modo 
Recovery)\tCtrl+3", "Borra la partición CACHE. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipecache, item)

item = menu_conf.Append(104, "&4 Hacer WIPE DALVIK (Modo 
Recovery)\tCtrl+4", "Borra la partición DALVIK. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipedalvik, item)

item = menu_conf.Append(105, "&5 Borra el Almacenamiento Interno (Modo 
Recovery)\tCtrl+5", "Elimina todo el contenido del Almacenamiento 
Interno. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipeinterno, item)

item = menu_conf.Append(106, "&6 Hacer todos los WIPES (Modo 
Recovery)\tCtrl+6", "Hace todos los WIPES juntos. Se detendrá si se 
produce algún error. Acción no reversible.")

self.Bind(wx.EVT_MENU, self.OnMenuwipecompleto, item)

menuBar.Append(menu_conf, "WIPES")

self.SetMenuBar(menuBar)

# paneles

panel = wx.Panel(self, wx.ID_ANY)

# widgets

Bien CONFIGURO LOS Widgets…

Y AHORA VIENE LOS DEF DE LOS MENUS, PONGO UNO DE PRUEBA:

def OnMenuwipesystem(self,event):

self.MenuBar.EnableTop(0, False) # Deshabilito EL MENÚ wipes

t = hilo_wipesystem()

t.start()

Bien lo importante es que e deshabilitado el menú WIPES ya que no deseo 
que se use mientras el hilo esta en ejecución bien el problema es que 
llamo al hilo en otra clase pero no se como volver a activar el menú ya 
que e probado de todo y no hay manera siempre me da error. Sobre todo 
que self ya esta definido en la clase del hilo.

Bien pongo el hilo:

class hilo_wipesystem(threading.Thread):

def __init__(self):

self.stdout = ""

self.stderr = ""

threading.Thread.__init__(self)

def run(self):

Bien desarrollo el hilo y cuando termina quiero volver a activar el menú 
WIPES.

self.MenuBar.EnableTop(0, True) # Quiero volver activar el menú WIPES

Decir que me da error cambiando self por VentanaPrincipal e probado 
todas las combinaciones pero no entiendo o no comprendo bien si se puede 
llamar de una clase a otra.

Os DEJO IGUALMENTE LA PARTE FINAL:

### Inicio clase Aplicación

class Aplicacion(wx.App):

"""Clase de la aplicacion."""

def OnInit(self):

self.ventana = VentanaPrincipal()

self.ventana.Show(True)

#self.SetTopWindow(self.ventana)

return True

if __name__ == '__main__':

aplicacion = Aplicacion()

aplicacion.MainLoop()

### Fin clase Aplicación

Muchas gracias de antemano.

Cordiales saludos.

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190314/cc40f485/attachment.html>


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