Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2015, 18:52
ArturoJ
 
Fecha de Ingreso: abril-2015
Ubicación: Canarias
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Es posible llamar resultado de variable dentro de una clase distinta

Buenas, estoy intentando cambiar un Label que esta dentro de una clase con una accion que esta en otra clase.
Estoy con wxpython y utilizando 2 paneles en una misma ventana.

Código:
import wx
    #----------------------------------------------------------------------


class RightPanel(wx.Panel):
 
    def __init__(self, parent):

        wx.Panel.__init__(self, parent=parent)
     
        self.texto = wx.StaticText(self, -1, 'Test',(230,10), style=wx.ALIGN_CENTRE) #<------ Label que quiero cambiar

    #----------------------------------------------------------------------

class LeftPanel(RightPanel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)
        
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        vbox = wx.BoxSizer(wx.VERTICAL)

        panel1 = wx.Panel(self, -1)
        self.tree = wx.TreeCtrl(panel1, 1, wx.DefaultPosition, (-1,-1), wx.TR_HIDE_ROOT|wx.TR_DEFAULT_STYLE)

        root = self.tree.AddRoot('Programmer')
        os = self.tree.AppendItem(root, 'Programas')
        pl = self.tree.AppendItem(root, 'Programas en Python 3.4')

        self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.Cambiar_Texto_Label, id=1)
        vbox.Add(self.tree, -1, wx.EXPAND)
        hbox.Add(panel1, -1, wx.EXPAND)
        panel1.SetSizer(vbox)
        self.SetSizer(hbox)
        self.Centre()
        
    def Cambiar_Texto_Label(self, event): #<------- Accion para cambiar label

        item =  event.GetItem()
        self.texto.SetValue(item) #<------- Accion para cambiar Label



    #----------------------------------------------------------------------

class Cagador_Ventana(wx.Frame):

 
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,
                          "Panel",
                          size=(1100,660))
 
        splitter = wx.SplitterWindow(self)
        leftP = LeftPanel(splitter)
        rightP = RightPanel(splitter)
 

        splitter.SplitVertically(leftP, rightP)
        splitter.SetMinimumPaneSize(250)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(splitter, 1, wx.EXPAND)
        self.SetSizer(sizer)
        self.Centre()
#----------------------------------------------------------------------

if __name__ == "__main__":
    app = wx.App(False)
    frame = Cagador_Ventana()
    frame.Show()
    app.MainLoop()
    app.MainLoop()

Última edición por razpeitia; 05/04/2015 a las 19:11