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/

Responder a