[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