Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Duda con atajo de teclado en una ventana padre creada con wxPython

Estas en el tema de Duda con atajo de teclado en una ventana padre creada con wxPython en el foro de Python en Foros del Web. Hola amigos, espero que anden bien!! Bueno les comento que estoy comenzando con interfaz grafica de usuario (GUIs), para eso utilizo el programa wxPython , ...
  #1 (permalink)  
Antiguo 01/03/2014, 08:21
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Duda con atajo de teclado en una ventana padre creada con wxPython

Hola amigos, espero que anden bien!!
Bueno les comento que estoy comenzando con interfaz grafica de usuario (GUIs), para eso utilizo el programa wxPython, que bien podria utilizar TKinter, pero me gusta mas wxPython.

Bueno tengo una duda, quisiera saber si es posible utilizar la tecla Esc (Escape) para salir de un programa, osea de una ventana padre, mediante el metodo de ejemplo:


Código:
        quit = wx.MenuItem(file, 105, '&Quit\tCtrl+Q', 'Quit the Application')
        quit.SetBitmap(wx.Bitmap('probar.png'))
        file.AppendItem(quit)
y lo que yo quisiera saber si es posible asignar la tecla de Escape para cerrar un programa al pulsar la misma, por ejemplo algo asi:

Código:
quit = wx.MenuItem(file, 105, '&Quit\tEsc', 'Quit the pplication')
tambien pobre asi:

Código:
quit = wx.MenuItem(file, 105, '&Quit\tEscape', 'Quit the pplication')
pero ninguno me sirvio, asi que la verdad no se que hacer, no logro poder asigar la tecla de Escape para cerrar el programa.
¿Alguien sería tan amable de ayudarme? Por favor.

Desde ya compañeros muchas gracias y que tengan buen día!!
  #2 (permalink)  
Antiguo 01/03/2014, 10:07
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Duda con atajo de teclado en una ventana padre creada con wxPython

Podes hacer algo como esto. Suponiendo que self es tu ventana principal:

Código Python:
Ver original
  1. self.Bind(wx.EVT_KEY_UP, self.key_up)

Y después:

Código Python:
Ver original
  1. def key_up(self, event):
  2.     event.Skip()
  3.     if event.GetKeyCode() == 27: # Escape
  4.         # Codigo para cerrar tu aplicación

Espero que te sirva!

  #3 (permalink)  
Antiguo 01/03/2014, 22:47
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con atajo de teclado en una ventana padre creada con wxPython

Buenas carbon muchas gracias por tu ayuda, de corazón te lo agradezco, gracias.
Amigo probé el código que me dejaste pero no funcionó de la manera que yo pensaba, bueno en realidad primero pensaba que no funcionaba el código, voy a explicarlo.

Primero quiero comentar que el programa al cual quiero asignar la tecla de ESCape es un programa que lo obtube de un tutorial de wxPython, el mismo es un Editor de archivos de textos/programas.
El editor está bastante bueno, pero no sabría como asignarle esa función que al presionar la tecla de ESCape sobre él, el mismo se cierre.
Yo he probado el código que me has pasado amigo carbon y no funcionó, pero me quedé con la duda porque lo ví bastante bien al código, así que lo probé en otro programa y tampoco funcionó, bueno haciendo unas pruebas pude comprar con certeza que el código si funciona a la perfección, pero... y aquí es donde viene el asunto, es que el Evento del Programa no responde cuando está seleccionado algún control de la ventana, es decir por ejemplo en este editor apenas lo abro aparece el cursor para poder escribir bien se habra el programa, pero cláro, al estar el cursor en ese lugar (dentro de un Edit) no se puede ejecutar el evento que produce la asignación de teclas, por lo tanto si el programa tiene varios controles y está seleccionado el objeto sobre alguno de ellos, el evento no funcionará por lo que la tecla ESCape tampoco lo hará.
Para ser un poco más claro, por ejemplo supongamos que haya un programa que tiene un Botón normal, un botón de Radio, un Edit y un CheckButton y yo hago clic sobre alguno de ellos, ahí es cuando el evento no se produce ya que hay enfocado un clic en ese evento, pero lo que yo hice fue hacer un clic en una parte del programa que no tiene nada de nada, sólo ventana osea sin ningún control y ahí si funcionó perfectamente.
Habría que ver si es posible que se pueda utilizar la tecla de ESCape para cerrar el programa cuando está enfocado algún control. Quizás esto si sea posible pero en una ventana hija, no padre.
Buenos mi estimados amigos, eso les quería comentar!!!
Amigo carbon, ¿de que otra manera puedo solventar este inconveniente?
Esperaré alguna respuesta de cualquier persona, desde ya muchísimas gracias por su ayuda!!
Gracias nuevamente carbon.
Que tengan buen día : )
  #4 (permalink)  
Antiguo 02/03/2014, 11:11
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Duda con atajo de teclado en una ventana padre creada con wxPython

Entiendo perfectamente lo que me explicas. Se me ocurre que puedes resolverlo conectando todos tus controles con la misma funcion. Por ejemplo, tu ya has esto esto:

Código Python:
Ver original
  1. self.Bind(wx.EVT_KEY_UP, self.key_up)

Pues ahora te queda hacer lo mismo para los demás controles, por ejemplo:

Código Python:
Ver original
  1. self.checkbox.Bind(wx.EVT_KEY_UP, self.key_up)
  2. self.radiobutton.Bind(wx.EVT_KEY_UP, self.key_up)
  3. self.button.Bind(wx.EVT_KEY_UP, self.key_up)
  4. self.edit.Bind(wx.EVT_KEY_UP, self.key_up)

Obviamente los nombres de los controles los pones vos

Espero que te sirva!

  #5 (permalink)  
Antiguo 03/03/2014, 17:48
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Duda con atajo de teclado en una ventana padre creada con wxPython

Hola nuevamente carbon!
He probado el código que me has pasado y la verdad funcionó perfectamente!!!!!
Excelente trabajo, muy bien amigo carbon !
Esta bueno eso de poder elegir en que control/componente se le puede asignar el atajo de teclado que uno desee.
La verdad hace muy poco he empezado con wxPython y me encanta, cada vez me sorprendo más de todo lo que se puede hacer, bastante bueno y gracias a C/C++ también por hacer eso posible.
Gracias nuevamente amigo carbon ahora si funciona la tecla de ESCape cuando está enfocado el clic en el TextCtrl.
Bueno me despido pero contento por tu gran ayuda amigo, te deseo buena suerte y muchas gracias de corazón.
Hasta pronto!! y Gracias a todos!
Que tengan buen comienzo de semana!!
  #6 (permalink)  
Antiguo 04/03/2014, 11:38
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Duda con atajo de teclado en una ventana padre creada con wxPython

De nada, me alegro que te haya servido!

Etiquetas: gui, padre, teclado, ventana, wxpython
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 12:38.