wxPython - Gestión de diseño

Un widget GUI se puede colocar dentro de la ventana del contenedor especificando sus coordenadas absolutas medidas en píxeles. Las coordenadas son relativas a las dimensiones de la ventana definidas por el argumento de tamaño de su constructor. La posición del widget dentro de la ventana está definida porpos argumento de su constructor.

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

Esta Absolute Positioning sin embargo, no es adecuado debido a las siguientes razones:

  • La posición del widget no cambia incluso si se cambia el tamaño de la ventana.

  • Es posible que la apariencia no sea uniforme en diferentes dispositivos de visualización con diferentes resoluciones.

  • La modificación en el diseño es difícil, ya que puede ser necesario rediseñar todo el formulario.

La API wxPython proporciona clases de diseño para una gestión más elegante del posicionamiento de los widgets dentro del contenedor. Las ventajas de los administradores de diseño sobre el posicionamiento absoluto son:

  • Los widgets dentro de la ventana cambian de tamaño automáticamente.
  • Garantiza una apariencia uniforme en dispositivos de visualización con diferentes resoluciones.
  • Es posible agregar o eliminar widgets dinámicamente sin tener que rediseñar.

El administrador de diseño se llama Sizer en wxPython. Wx.Sizer es la clase base para todas las subclases de dimensionadores. Analicemos algunos de los medidores importantes, como wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer y wx.GridBagSizer.

SN Medidores y descripción
1 BoxSizer

Este medidor permite que los controles se organicen en filas o columnas. El diseño de BoxSizer está determinado por su argumento de orientación (ya sea wxVERTICAL o wxHORIZONTAL).

2 GridSizer

Como sugiere el nombre, un objeto GridSizer presenta una cuadrícula bidimensional. Los controles se agregan en la ranura de la cuadrícula en orden de izquierda a derecha y de arriba a abajo.

3 FlexiGridSizer

Este medidor también tiene una cuadrícula bidimensional. Sin embargo, proporciona un poco más de flexibilidad en la disposición de los controles en las celdas.

4 GridBagSizer

GridBagSizer es un medidor versátil. Ofrece más mejoras que FlexiGridSizer. El widget secundario se puede agregar a una celda específica dentro de la cuadrícula.

5 StaticBoxSizer

Un StaticBoxSizer coloca un medidor de caja en una caja estática. Proporciona un borde alrededor de la caja junto con una etiqueta en la parte superior.