Hola,
He estado probando a usar WxPython para la parte de las interfaces
gráficas, más que nada porque puedo permitirme desarrollar una misma app
para GNU/Linux y Windows, y como usa las API nativas de cada SO, en
Debian con Gnome usa Gtk y en Windows, supongo que las API del propio
sistema, lo cual ayuda porque ambas plataformas conectan con sus
respectivas librerías de accesibilidad.
El tema lo tengo al querer probar un test en Windows (no lo he podido
probar en Debian porque no funciona el SO por ahora), y es esto: Cuando
hago un diálogo con unos cuantos botones, suelo querer acomodarlos en
cierta forma por la pantalla utilizando un FlexGridSizer. Por ejemplo,
en el trozo de código que adjunto debajo del mensaje, intento colocar un
FlexGridSizer de 2x2, luego pongo dos botones arriba y dos debajo.
Al ver la interfaz con cuatro botones, lo normal, es pensar que como se
puede manejar la interfaz con teclado, puedes usar las flechas de
dirección (cursores) para ir hacia el botón de la derecha, o al de abajo
de donde inicia el foco de la aplicación, pero no pasa exactamente así.
Cuando estoy situado en la ventana, y presiono una vez la flecha hacia
la derecha, me desplazo sin problemas hacia el botón que ubiqué a la
derecha del primero. El problema está cuando quiero ir hacia el botón de
abajo, pues por más que presione la flecha hacia abajo, lo que hace es
volver a desplazarme a la derecha. Por ejemplo, si estoy en el botón de
la izquierda de la primer fila, y presiono con la flecha hacia abajo, me
envía hacia el botón de la derecha todavía de la primer fila.
Otra cosa, es que por ejemplo cuando hacía las cosas con gtk, y llegaba
a un punto donde el botón sobre el que estaba era el último de una fila,
si yo pulsaba con las flechas para ir más allá de ese último elemento,
no podía hacerlo. Marcaba un tope o algo parecido, el caso es que no
avanzaba. Por ejemplo si el mismo ejemplo fuera hecho en Gtk, y me
encontrara en el segundo botón (a la derecha) de la primer fila, y
presiono hacia la derecha, como no hay nada más hacia ese lado, no pasa
nada, no desplaza, pero WxPython lo que hace es saltarme hacia el
siguiente control, sin importar si está debajo o a la derecha. Lo mismo
me pasa al ubicarme en el primer botón (el de arriba a la izquierda), y
presionar hacia arriba, o hacia la izquierda. En los dos casos, termino
en el botón de la derecha de la segunda fila.
Alguien sabe si este comportamiento es por algo en especial o cómo
podría hacer algo más parecido a lo que se hacía en Gtk?
Adjunto algo para probar, uso WxPython 2.8.
# -*- coding: utf-8 -*-
import wx
class mainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Test")
panel = wx.Panel(self, -1)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
btn1 = wx.Button(panel, -1, "Test1")
btn2 = wx.Button(panel, -1, "Test2")
btn3 = wx.Button(panel, -1, "Test3")
btn4 = wx.Button(panel, -1, "Test4")
sizer.AddMany(btn1, btn2, btn3, btn4)
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = mainFrame()
frame.show()
app.MainLoop()
Gracias y saludos.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/