Foros del Web » Programando para Internet » Python »

Unir eventos [wxpython]

Estas en el tema de Unir eventos [wxpython] en el foro de Python en Foros del Web. Hola a tod@s otra vez , Aqui vengo con otro problema. Es pequeño pero no me sale :S. Lo que quiero hacer es que cuando ...
  #1 (permalink)  
Antiguo 22/08/2010, 11:13
 
Fecha de Ingreso: agosto-2010
Ubicación: España
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Unir eventos [wxpython]

Hola a tod@s otra vez , Aqui vengo con otro problema. Es pequeño pero no me sale :S. Lo que quiero hacer es que cuando se pinche en salir por ejemplo, salga de la aplicación, uniendolo para ello a un evento, pero no me sale :S

Aqui el code de lo que llevo:

Código Python:
Ver original
  1. #-*- coding: iso-8859-1 -*-
  2. import wx
  3.  
  4. class Edit(wx.MiniFrame):
  5.     def __init__ (self):
  6.         wx.MiniFrame.__init__(self, None, -1, 'Goxar Editor', wx.DefaultPosition, (900, 700), (wx.DEFAULT_FRAME_STYLE)^(wx.RESIZE_BORDER|wx.MAXIMIZE_BOX))
  7.        
  8.         panel = wx.Panel(self, wx.NewId(), wx.DefaultPosition, (900, 700))
  9.         self.edit = wx.TextCtrl(panel, pos=(0, 0), size=(900, 700), style=wx.TE_MULTILINE)
  10.         self.CreateStatusBar()
  11.         self.SetStatusText("Barra de estado")
  12.         #-----------------------------------------------------------------------
  13.         menubar = wx.MenuBar()
  14.         #menu de archivo
  15.         archi = wx.Menu()
  16.         archi.Append(-1, 'Nuevo', 'Abre un nuevo archivo')
  17.         archi.Append(-2, '', '')
  18.         archi.Append(-1, 'Abrir', 'Abre un archivo')
  19.         archi.Append(-1, 'Guardar', 'Sobreescribe el archivo ya guardado')
  20.         archi.Append(-1, 'Guardar como', 'Guarda el archivo')
  21.         archi.Append(-2, '', '')
  22.         archi.Append(-1, 'Salir', 'Sale del programa')
  23.         #menu de edicion
  24.         edi = wx.Menu()
  25.         edi.Append(-1, 'Copiar', 'Copia parte del texto')
  26.         edi.Append(-1, 'Cortar', 'Corta parte del texto')
  27.         edi.Append(-1, 'Pegar', 'Pega el contenido del portapapeles')
  28.         #menu de ayuda
  29.         ayu = wx.Menu()
  30.         ayu.Append(-1, 'Acerca de...', 'Mas información acerca del programa')
  31.        
  32.         #eventos
  33.         #Aqui iria esta parte --> self.Bind(wx.EVT_MENU, self.sal, ??)
  34.         #lo que no se es que poner en ?? para ponder unirlo
  35.     #def sal(self,e):
  36.         #self.Close(True)
  37.        
  38.        
  39.    
  40.        
  41.      
  42.         #barra de menu
  43.         menubar.Append(archi, '&Archivo')
  44.         menubar.Append(edi, '&Edición')
  45.         menubar.Append(ayu, '&Ayuda')
  46.         self.SetMenuBar(menubar)
  47.         #----------------------------------------------------------------------
  48.      
  49.        
  50.    
  51. class App(wx.App):
  52.     def OnInit(self):
  53.         frame = Edit()
  54.         frame.Show()
  55.         self.SetTopWindow(frame)
  56.         return True
  57.  
  58. if __name__ == '__main__':
  59.     app = App()
  60.     app.MainLoop()

Gracias :-p
  #2 (permalink)  
Antiguo 22/08/2010, 11:27
Avatar de 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: Unir eventos [wxpython]

Código Python:
Ver original
  1. #-*- coding: iso-8859-1 -*-
  2. import wx
  3. ID_EXIT = 102
  4.  
  5. class Edit(wx.MiniFrame):
  6.     def __init__ (self):
  7.         wx.MiniFrame.__init__(self, None, -1, 'Goxar Editor', wx.DefaultPosition, (900, 700), (wx.DEFAULT_FRAME_STYLE)^(wx.RESIZE_BORDER|wx.MAXIMIZE_BOX))
  8.        
  9.         panel = wx.Panel(self, wx.NewId(), wx.DefaultPosition, (900, 700))
  10.         self.edit = wx.TextCtrl(panel, pos=(0, 0), size=(900, 700), style=wx.TE_MULTILINE)
  11.         self.CreateStatusBar()
  12.         self.SetStatusText("Barra de estado")
  13.         #-----------------------------------------------------------------------
  14.         menubar = wx.MenuBar()
  15.         #menu de archivo
  16.         archi = wx.Menu()
  17.         archi.Append(-1, 'Nuevo', 'Abre un nuevo archivo')
  18.         archi.Append(-2, '', '')
  19.         archi.Append(-1, 'Abrir', 'Abre un archivo')
  20.         archi.Append(-1, 'Guardar', 'Sobreescribe el archivo ya guardado')
  21.         archi.Append(-1, 'Guardar como', 'Guarda el archivo')
  22.         archi.Append(-2, '', '')
  23.         archi.Append(ID_EXIT, 'Salir', 'Sale del programa')
  24.         #menu de edicion
  25.         edi = wx.Menu()
  26.         edi.Append(-1, 'Copiar', 'Copia parte del texto')
  27.         edi.Append(-1, 'Cortar', 'Corta parte del texto')
  28.         edi.Append(-1, 'Pegar', 'Pega el contenido del portapapeles')
  29.         #menu de ayuda
  30.         ayu = wx.Menu()
  31.         ayu.Append(-1, 'Acerca de...', 'Mas información acerca del programa')
  32.        
  33.         #eventos
  34.         #Aqui iria esta parte --> self.Bind(wx.EVT_MENU, self.sal, ??)
  35.         #lo que no se es que poner en ?? para ponder unirlo
  36.     #def sal(self,e):
  37.         #self.Close(True)
  38.         wx.EVT_MENU(self, ID_EXIT,  self.onClose)
  39.        
  40.    
  41.         #barra de menu
  42.         menubar.Append(archi, '&Archivo')
  43.         menubar.Append(edi, '&Edición')
  44.         menubar.Append(ayu, '&Ayuda')
  45.         self.SetMenuBar(menubar)
  46.         #----------------------------------------------------------------------
  47.  
  48.     def onClose(self, *event):
  49.         self.Close(True)
  50.      
  51.        
  52.    
  53. class App(wx.App):
  54.     def OnInit(self):
  55.         frame = Edit()
  56.         frame.Show()
  57.         self.SetTopWindow(frame)
  58.         return True
  59.  
  60. if __name__ == '__main__':
  61.     app = App()
  62.     app.MainLoop()
  #3 (permalink)  
Antiguo 22/08/2010, 16:25
 
Fecha de Ingreso: agosto-2010
Ubicación: España
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Unir eventos [wxpython]

Ya sé esto, gracias!!
Ahora, si quiero unir un evento a "Abrir" situado en el menú, también tengo que poner un ID al principio del code?, Si es así ¿Cual?¿Como tengo que saber cuales poner?

Gracias de antemano!
  #4 (permalink)  
Antiguo 22/08/2010, 17:17
Avatar de 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: Unir eventos [wxpython]

Lo mejor sera autogenerar un ID para que no utilices un mismo ID para 2 diferentes widgets.

Código Python:
Ver original
  1. ID_OPEN = wx.NewId()
  2. ID_EXIT = wx.NewId()
  #5 (permalink)  
Antiguo 22/08/2010, 18:26
AxL456
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Unir eventos [wxpython]

Cita:
Iniciado por swik Ver Mensaje
Ya sé esto, gracias!!
Ahora, si quiero unir un evento a "Abrir" situado en el menú, también tengo que poner un ID al principio del code?, Si es así ¿Cual?¿Como tengo que saber cuales poner?

Gracias de antemano!
para funciones comunes lo mejor es utilizar los ID's predeterminados de wx. Los puedes ver aqui

por ejemplo para lo que preguntaste al principio, desde mi punto de vista es mejor realizarlo de la siguiente manera:

Código Python:
Ver original
  1. self.Bind(wx.EVT_CLOSE, self.OnClose)

el evento wx.EVT_CLOSE esta predeterminado para el boton de cerrar de cualquier ventana (La "X" roja en la parte superior)

con ese bind puedes controlar de manera mas intuitiva (desde mi punto de vista) el cerrado de la aplicacion..
  #6 (permalink)  
Antiguo 23/08/2010, 05:44
 
Fecha de Ingreso: agosto-2010
Ubicación: España
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Unir eventos [wxpython]

Ya entendI, Gracias a los dos!!

Etiquetas: eventos, unir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.