Cursowxpython
Páginas: 11 (2544 palabras)
Publicado: 28 de mayo de 2015
Deusto
.
.
.
.
ESIDE
Curso wxPython
Dr. Diego Lz. de Ipiña Gz. de Artaza
http://paginaspersonales.deusto.es/di
pina
Cursos de Julio ESIDE, 14 Julio
Universidad de
Deusto
.
.
.
.
ESIDE
Contenidos
Introducción
wxPython: cross-platform GUI toolkit
Primeros pasos
Controles
Eventos
Dibujando en wxPython
wxGlade
Ejemplo: Tres en Raya modo gráfico
ConclusiónUniversidad de
Deusto
.
.
.
.
ESIDE
Programación de GUIs en
Python
Tkinter es la GUI toolkit que por defecto viene con
Python (http://www.python.org/doc/current/lib
/module-Tkinter.html)
Basada en Tcl/tk, no tiene apariencia nativa
Es lenta pero su uso es muy sencillo
Pmw (Python meta widgets) (
http://pmw.sourceforge.net/)
Componentes más elaborados encima de Tkinter
Existen otrastoolkits para generación de GUIs:
wxPython (http://www.wxpython.org/)
Pythonwin (
http://www.python.org/windows/pythonwin/)
Apariencia nativa, basado en wxWidgets
(multiplaforma), muy rápida
Solamente para Windows, usa directamente la API de
Windows
PyGTK (http://www.pygtk.org/)
Universidad de
Deusto
.
.
.
.
ESIDE
Ejemplo Tkinter I
# gui/tkinterwatch.py
from Tkinter import *import time, sys
class StopWatch(Frame):
""" Implements a stop watch frame widget. """
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self._start = 0.0
self._elapsedtime = 0.0
self._running = 0
self.timestr = StringVar()
self.makeWidgets()
def makeWidgets(self):
""" Make the time label. """
l = Label(self, textvariable=self.timestr)
self._setTime(self._elapsedtime)l.pack(fill=X, expand=NO, pady=2, padx=2)
def _update(self):
""" Update the label with elapsed time. """
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._timer = self.after(50, self._update)
def _setTime(self, elap):
""" Set the time string to Minutes:Seconds:Hundreths """
minutes = int(elap/60)
seconds = int(elap - minutes*60.0)
hseconds = int((elap - minutes*60.0 -seconds)*100)
Universidad de
Deusto
.
.
.
.
ESIDE
Ejemplo Tkinter II
def Start(self):
""" Start the stopwatch, ignore if running. """
if not self._running:
self._start = time.time() - self._elapsedtime
self._update()
self._running = 1
def Stop(self):
""" Stop the stopwatch, ignore if stopped. """
if self._running:
self.after_cancel(self._timer)
self._elapsedtime = time.time() - self._startself._setTime(self._elapsedtime)
self._running = 0
def Reset(self):
""" Reset the stopwatch. """
self._start = time.time()
self._elapsedtime = 0.0
self._setTime(self._elapsedtime)
if __name__ == '__main__': root = Tk()
sw = StopWatch(root)
sw.pack(side=TOP)
Button(root, text='Start', command=sw.Start).pack(side=LEFT)
Button(root, text='Stop', command=sw.Stop).pack(side=LEFT)
Button(root, text='Reset',command=sw.Reset).pack(side=LEFT)
Button(root, text='Quit', command=sys.exit(0)).pack(side=LEFT)
root.mainloop()
Universidad de
Deusto
.
.
.
.
ESIDE
Ejemplo de GUI con Pmw
Universidad de
Deusto
.
.
.
.
ESIDE
Introducción a wxPython
Basada en la toolkit wxWidgets
(http://www.wxwidgets.org/):
Creada para proveer una manera barata
y flexible de maximizar la inversión
realizada en eldesarrollo de GUIs
Hasta Febrero del 2004, wxWidgets era
conocida como wxWindows, pero Microsoft
“sugirió” un cambio de nombre
Esconde al programador de la complejidad
de C++ y permite el acceso a la misma
funcionalidad desde Python
Implementada como un módulo de extensión
Python que funciona como un wrapper alrededor
de wxWidgets
Universidad de
Deusto
.
.
.
.
ESIDE
Características wxPython
Creada por Robin Dunn, beneficiándose del
excelente trabajo de Julian Smart en
wxWidgets
Multiplataforma, presencia nativa, alto rendimiento
gráfico
Basada en la API C++ wxWidgets creada en 1992
(http://www.wxwidgets.org)
Alternativa capaz y sencilla a MFC y Windows.Forms
en Windows o GTK y Qt en Linux
wxWidgets + Python = wxPython (creada en
1996)
Permite realizar...
Leer documento completo
Regístrate para leer el documento completo.