Introduccion a wxPython

Páginas: 6 (1355 palabras) Publicado: 9 de enero de 2016
Lic. Marcelo Fernández
marcelo.fidel.fernandez@gmail.com - http://blog.marcelofernandez.info
Publicado bajo Licencia Creative Commons - BY,
excepto las imágenes y logos tomadas de sitios de Internet

Introducción - GUIs en Python


¿Qué es una GUI? ¿Y un toolkit gráfico?



Bibliotecas: ”Bindings” o ”Wrappers”



Toolkits disponibles en Python:


Tcl/Tk: Instalada por defecto.



wxPython:wrapper de wxWidgets (antes wxWindows)



PyGTK: wrapper de GTK.



PyQT: wrapper de QT.
(Ver comparativa en http://python.org.ar/pyar/InterfacesGraficas)

Introducción - wxPython


Biblioteca para usar wxWidgets desde Python



Hereda sus características


Robusta, años evolucionando (1992).



Pensado para ser Multiplataforma desde el inicio.



Conserva el Look and Feel del entorno y suvelocidad,
ya que utiliza componentes GUI estándar de cada SO.



No sufre del problema del ”común denominador”.



Flexibilidad. Permite embeber componentes nativos.



LGPL. Aplicaciones con cualquier licencia.



Windows, Linux, Mac y más con casi
el mismo código fuente, sólo recompilando.

Introducción - wxWidgets

Introducción - wxWidgets

Introducción - wxPython


Pero wxPythonamplía las ventajas:


Es Python: más fácil de aprender y adecuado que C++.



Código ”pythónico”.



+ Fácilmente extensible, AGW es un ejemplo.





Windows, Linux, Mac y más con el mismo código
fuente, sin recompilar. Sólo se ejecuta el script y listo.

Desventajas


Instalación: No está incluido en Python mismo.



Muchas capas de abstracción.



Curva de aprendizaje media/alta,lógicamente
según la aplicación que se quiera desarrollar

Introducción - wxPython
Mi
Mi Aplicación
Aplicación
Python
Python

Bindings
wxD
wxD wxErlang
wxErlang

wxPerl
wxPerl

WxPython
WxPython
Python/C++
Python/C++

wxRuby
wxRuby wxHaskell
wxHaskell

Otros
Otros

wxWidgets
wxWidgets
C++
C++

Windows
Windows

Win32
Win32//Win64
Win64

Linux,Unix/GTK
Linux,Unix/GTK Mac
Mac OSX
OSX
wxGTK
wxGTK

wxMac
wxMacWidgets / Plataformas
Ver más en http://wiki.wxwidgets.org/General_Information

Otras
Otras

wxX11,wxDFB,wxMotif...
wxX11,wxDFB,wxMotif...

Ejemplo 1 – Hola Mundo
#!/usr/bin/env python
import wx
if __name__ == '__main__':
app = wx.App()
frame = wx.Frame(None, wx.ID_ANY, "Hola Mundo")
frame.Show()
app.MainLoop()

Ejemplo 2 – Estructura Base
#!/usr/bin/env python
import wx
classTestFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(200,100))
self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
if __name__ == '__main__':
app = wx.App()
frame = TestFrame(None, 'Editor de Texto')
frame.Center()
frame.Show()
app.MainLoop()

Modelo de Cajas - wxPython








Todo lo visible hereda de wx.Window
Existen ventanas ”contenedores”,
quesirven para contener a otras
ventanas. Ej.: wx.Frame, wx.Panel,
wx.ScrolledWindow.
Los contenedores permiten aislar y
gestionar las regiones que él ocupa,
para definir dónde se ubicarán y
cómo se distribuirán finalmente los widgets que
contiene.
Un contenedor puede contener uno o más
widgets y/o contenedores

Organización de Widgets




Organización Estática


Posicionamiento basado en pixels

Gestión manual de la ubicación de los componentes



Pero limitado por donde se lo mire:


Monitores y/o Resoluciones diferentes



Idiomas, SOs, ”Skins”, Tipografías diferentes

Organización Dinámica


Mucho más util en todos el resto de los casos



wxWidgets lo provee mediante los Sizers



Diferentes algoritmos de posicionamiento,
diferentes subclases de Sizer. (demo)

Ejemplo 3/1 –Sizers y Widgets
#!/usr/bin/env python
# coding: utf-8
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
# Llamo al constructor del padre de MainWindow
wx.Frame.__init__(self, parent, title=title, size=(640,480))
# Creo una StatusBar para la ventana
self.CreateStatusBar()
# Creo una instancia de Menú y le agrego items
filemenu= wx.Menu()
filemenu.Append(wx.ID_ABOUT,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Introduccion
  • Introduccion
  • Introduccion
  • Introduccion
  • Introduccion
  • Introduccion
  • Introduccion
  • Introduccion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS