Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/04/2015, 19:51
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Es posible llamar resultado de variable dentro de una clase distinta

Es bastante simple, le agregas un callback y dejas que ese callback que esta en la clase que contiene el panel derecho e izquierdo, maneje la situación.

Código Python:
Ver original
  1. import wx
  2.  
  3.  
  4. class RightPanel(wx.Panel):
  5.     def __init__(self, parent):
  6.         wx.Panel.__init__(self, parent=parent)
  7.         self.texto = wx.StaticText(self, -1, 'Test', (230,10), style=wx.ALIGN_CENTRE) #<------ Label que quiero cambiar
  8.  
  9.     def setTitle(self, title):
  10.         self.texto.SetLabel(title)
  11.  
  12.  
  13. class LeftPanel(wx.Panel):
  14.     def __init__(self, parent, parent_callback):
  15.         wx.Panel.__init__(self, parent=parent)
  16.  
  17.         self.parent_callback = parent_callback
  18.        
  19.         hbox = wx.BoxSizer(wx.HORIZONTAL)
  20.         vbox = wx.BoxSizer(wx.VERTICAL)
  21.  
  22.         panel1 = wx.Panel(self, -1)
  23.         self.tree = wx.TreeCtrl(panel1, 1, wx.DefaultPosition, (-1,-1), wx.TR_HIDE_ROOT|wx.TR_DEFAULT_STYLE)
  24.  
  25.         root = self.tree.AddRoot('Programmer')
  26.         os = self.tree.AppendItem(root, 'Programas')
  27.         pl = self.tree.AppendItem(root, 'Programas en Python 3.4')
  28.  
  29.         self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.Cambiar_Texto_Label, id=1)
  30.         vbox.Add(self.tree, -1, wx.EXPAND)
  31.         hbox.Add(panel1, -1, wx.EXPAND)
  32.         panel1.SetSizer(vbox)
  33.         self.SetSizer(hbox)
  34.         self.Centre()
  35.        
  36.     def Cambiar_Texto_Label(self, event): #<------- Accion para cambiar label
  37.         item =  event.GetItem()
  38.         text = self.tree.GetItemText(item)
  39.         self.parent_callback(text)
  40.  
  41.  
  42. class Cagador_Ventana(wx.Frame):
  43.     def __init__(self):
  44.         wx.Frame.__init__(self, None, wx.ID_ANY,
  45.                           "Panel",
  46.                           size=(1100,660))
  47.  
  48.         splitter = wx.SplitterWindow(self)
  49.         self.leftP = LeftPanel(splitter, self.parent_callback)
  50.         self.rightP = RightPanel(splitter)
  51.  
  52.  
  53.         splitter.SplitVertically(self.leftP, self.rightP)
  54.         splitter.SetMinimumPaneSize(250)
  55.         sizer = wx.BoxSizer(wx.VERTICAL)
  56.         sizer.Add(splitter, 1, wx.EXPAND)
  57.         self.SetSizer(sizer)
  58.         self.Centre()
  59.         self.Layout()
  60.  
  61.     def parent_callback(self, data):
  62.         self.rightP.setTitle(data)
  63.  
  64.  
  65. if __name__ == "__main__":
  66.     app = wx.App(False)
  67.     frame = Cagador_Ventana()
  68.     frame.Show()
  69.     app.MainLoop()