Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/02/2013, 19:53
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Wxpython: Paso de parámetros entre métodos

Código Python:
Ver original
  1. import wx
  2.  
  3. class monti(wx.Frame):
  4.  
  5. #--------------------------------------------------------------------------------
  6. #Constructor principal
  7.     def __init__(self):
  8.         wx.Frame.__init__(self, None, wx.ID_ANY,
  9.                           "Paso de parametros entre metodos", size=(500, 200))
  10.         self.Bind(wx.EVT_CLOSE, self.OnClose)
  11.         self.InitUI()
  12.         self.Centre()
  13.         self.Show()
  14.  
  15. #----------------------------------------------------------------------..........
  16. # Construccion de la GUI
  17.     def InitUI(self):        
  18.        
  19.         distros = ['arch','debian','ubuntu']
  20.         self.distro = None
  21.  
  22.         panel = wx.Panel(self)
  23.        
  24.         vbox = wx.BoxSizer(wx.VERTICAL)
  25.        
  26.         hbox3= wx.BoxSizer(wx.HORIZONTAL)
  27.         cb = wx.ComboBox(self, pos=(50, 30), choices=distros,
  28.             style=wx.CB_READONLY)
  29.         cb.Bind(wx.EVT_COMBOBOX, self.OnSelect)
  30.        
  31.         hbox3.Add(cb,border=10)
  32.         vbox.Add(hbox3, flag=wx.LEFT, border=30)  
  33.         panel.SetSizer(vbox)
  34.         vbox.Add((-1, 15))    
  35.        
  36.         hbox4 = wx.BoxSizer(wx.HORIZONTAL)
  37.         self.etiquetas = wx.StaticText(self,-1,label=u"Selecciona una distro")
  38.         hbox4.Add(self.etiquetas,border=10)              
  39.         vbox.Add(hbox4, flag=wx.LEFT, border=30)
  40.         vbox.Add((-1, 10))
  41.        
  42.         hbox7 = wx.BoxSizer(wx.HORIZONTAL)
  43.         self.etiqueta = wx.StaticText(self,-1,label=u"Enviar parametro proveniente de OnSelect a onBurn  ")
  44.         hbox7.Add(self.etiqueta,border=10)              
  45.         vbox.Add(hbox7, flag=wx.LEFT, border=30)
  46.         btnGra = wx.Button(self, label="Enviar...")
  47.         btnGra.Bind(wx.EVT_BUTTON, self.onBurn)
  48.         hbox7.Add(btnGra,wx.RIGHT,border=10)  
  49.         vbox.Add(hbox7, flag=wx.LEFT, border=30)    
  50.         vbox.Add((-1, 10))
  51. #----------------------------------------------------------------------
  52.     def onBurn(self, e):
  53.           print "Aqui imprimir el valor seleccionado en el combobox"
  54.           if self.distro is None:
  55.             print "    Aun no se ha seleccionado en el combobox"
  56.           else:
  57.             print "    Distro seleccioado %s" % (self.distro,)
  58. #----------------------------------------------------------------------
  59.     def OnSelect(self, e):
  60.         self.distro = e.GetString()
  61.         print "Ha seleccionado la distro:\n" + self.distro
  62.         self.etiquetas.SetLabel(self.distro)
  63. #----------------------------------------------------------------------      
  64.     def OnClose(self, event):
  65.         dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question',
  66.         wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
  67.         ret = dial.ShowModal()
  68.         dial.Destroy()
  69.         if ret == wx.ID_YES:
  70.             self.Destroy()
  71.         else:
  72.             self.Show()
  73. #----------------------------------------------------------------------
  74. # Run the program
  75. if __name__ == "__main__":
  76.     app = wx.App(False)
  77.     frame = monti()
  78.     app.MainLoop()

Creo que ya mas o menos entendí (eso espero). Lo que quieres es mantener el valor de lo que tienes seleccionado y eso lo puedes hacer fácilmente con atributo de la clase. Nada especial.