Componentes_Widgets_1_

Document Sample
Componentes_Widgets_1_ Powered By Docstoc
					            UNIVERSIDAD NACIONAL DE LOJA
         ÁREA DE LA ENERGÍA LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

                            CARRERA DE INGENIERÍA EN SISTEMAS




                                   V MÓDULO



             UNIDAD DE PROGRAMACION AVANSADA



Docente: Ing. Milton Lavanda

CONSULTA: N°1

CAPÍTULO 1: Interfases Graficas

Alumno:         Eduardo Pullaguari

Paralelo:     “B”

Fecha:         25 de septiembre del 2009




                                 LOJA _ECUADOR
             INTERFASES GRAFICAS O WIDGETS
   Definición de Widget.
   Componente con el cual un usuario interactúa en una interfaz gráfica. Son
   ejemplos de widget las ventanas, cajas de texto, checkboxs, listbox, entre otros.


   Definición                    de                 Widget                    toolkit
   (widget library, GUI toolkit, biblioteca widget). Conjunto de widgets para ser
   usados en el diseño de aplicaciones con interfaces gráficas de usuario (GUI).

   El toolkit (juego de herramientas) en sí mismo es una unidad de software que
   generalmente es proveído por el sistema operativo o el sistema de ventanas, para
   poder usar sus widgets en aplicaciones o el mismo sistema. Cada widget tiene una
   forma específica de interactuar con el usuario y es la parte visible de un GUI.

   En general, los widgets que provee un widget toolkit siguen ciertos estándares de
   diseño y formas de interactuar con éstos, además de tener cohesión estética entre
   sí.Los juegos de herramientas widget suelen contener botones, campos, casillas de
   verificación,               windows,                  paneles,                etc.

   Los widget toolkits controlan los eventos (por ejemplo, un clic de un usuario a un
   botón) y cuando detectan uno, son pasados hacia la aplicación para que haga lo
   que                                                                  corresponda.
   Son utilizados por los programadores para hacer aplicaciones con interfaces
   gráficas (GUI).

La interfaz gráfica de usuario, conocida también como GUI (del inglés graphical user
interface) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y
objetos gráficos para representar la información y acciones disponibles en la interfaz.
Habitualmente las acciones se realizan mediante manipulación directa para facilitar la
interacción del usuario con la computadora. Surge como evolución de la línea de
comandos de los primeros sistemas operativos y es pieza fundamental en un entorno
gráfico. Como ejemplo de interfaz gráfica de usuario podemos citar el entorno de
escritorio del sistema operativo Windows, el X-Window de Linux o el de Mac OS X,
Aqua.
En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de
usuario es el artefacto tecnológico de un sistema interactivo que posibilita, a través
del uso y la representación del lenguaje visual, una interacción amigable con un
sistema informático
                  Tipos de Interfases graficas
Gtk:
El Gimp Toolkit es un conjunto de bibliotecas multiplataforma, que crea una poderosa
herramienta útil para modelar y crear interfaces gráficas con grandes capacidades,
principalmente utilizadas por la suite Gnome.


Sus componentes principales

GDK ( Gimp Drawing Kit )
Todo lo que tenga que ver con dibujar ( polígonos, líneas ), carga y manipulación de
imágenes, y en general cualquier tipo de elemento gráfico, corre a cargo de Gdk.

Glib
Conjunto de bibliotecas que conforman todas el corazón de Gtk y Gnome. Se encarga
principalmente de todo el manejo de estructuras de datos, portabilidad, el manejo del
sistema de objetos, hilos( threads ) y en general todo lo que corresponde al sistema
base de Gtk.

ATK ( Accesibility Toolkit )
Este conjunto de bibliotecas permiten que Gtk mantenga todas esas opciones de
accesibilidad desde teclas especiales y dispositivos especiales.

Pango

Se encarga de todo lo relacionado al manejo de fuentes, internacionalización y afines.


El modelo de eventos ( Event Driven Model )
El funcionamiento de Gtk probablemente (y muy posiblemente) no fuera satisfactorio
sin un modelo gobernado por eventos.

Es decir, Gtk no funciona de manera lineal, no se puede anticipar cual será la acción
que el usuario elegirá para interactuar con la aplicación y es por tanto que el modelo
de eventos-señales está allí para dar control a todos los sucesos ocurridos con dichas
interacciones.
En pocas palabras lo que constituye a éste modelo es: un despachador principal, el
cual casi todo el tiempo está en espera de eventos( <Gtk2-main> ).

Cuando ocurre un evento es insertado en una cola en la cual cada uno de acuerdo a su
turno emite una señal de suceso y el usuario pueda cacharlo y realizar alguna función
específica.

Wx:
WxPython es un wrapper open source para el toolkit anteriormente conocido como
wxWindows: wxWidgets. wxPython es posiblemente el toolkit para desarrollo de
interfaces gráficas en Python más popular, superando incluso a TKinter, que, como
comentamos, se incluye por defecto con el intérprete de Python. wxPython cuenta con
más y mejores widgets que TKinter, y ofrece un muy buen aspecto en todas las
plataformas, utilizando MFC en Windows y GTK en Linux.

wxPython cuenta además con herramientas muy interesantes como wxGlade, una
aplicación RAD para diseñar las interfaces gráficas de forma visual.

Sin embargo, la API adolece de una cierta falta de consistencia y un estilo muy alejado
de Python y más cercano a C++, ya que, de hecho, uno de sus objetivos es no
distanciarse demasiado del estilo de wxWidgets. Esto ha provocado que hayan
aparecido distintos proyectos para abstraer al programador de los entresijos del
toolkit, como Dabo o Wax, aunque estos han tenido un éxito muy comedido.

Tanto wxPython como wxWidgets se distribuyen bajo una licencia “wxWindows
Licence”, que consiste esencialmente en una LGPL con la excepción de que las obras
derivadas en formato binario se pueden distribuir como el usuario crea conveniente.

Algunos ejemplos de aplicaciones conocidas creadas con wxPython son DrPython,
wxGlade, Boa Constructor, Stani’s Python Editor y ABC.

Ejemplo:

import wx

class Frame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, parent=None)
    panel = wx.Panel(self)
    text = wx.StaticText(panel, -1, "Hola mundo")
    c1 = wx.CheckBox(panel, -1, label="Uno")
    c2 = wx.CheckBox(panel, -1, label="Dos")
    t = wx.TextCtrl(panel)
    b1 = wx.Button(panel, -1, label="Aceptar")
     sizer = wx.BoxSizer(wx.VERTICAL)
     sizer.Add(text, 0, wx.ALL, 0)
     sizer.Add(c1, 0, wx.ALL, 0)
     sizer.Add(c2, 0, wx.ALL, 0)
     sizer.Add(t, 0, wx.ALL, 0)
     sizer.Add(b1, 0, wx.ALL, 0)
     panel.SetSizer(sizer)
     panel.Layout()

app = wx.App(redirect=True)
Frame().Show()
app.MainLoop()
Qt
Qt Designer es una biblioteca multiplataforma para desarrollar interfaces gráficas de
usuario. Fue creada por la compañía noruega Trolltech. Qt es utilizada en KDE, un
entorno de escritorio para sistemas como Linux o FreeBSD, entre otros. Utiliza el
lenguaje de programación C++ de forma nativa y además existen bindings para C,
Python, Perl y Ruby entre muchos.
El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante
SQL, así como uso de XML y una multitud de otros para el manejo de ficheros, además
de estructuras de datos tradicionales.

Compilación de Proyectos creados con Qt.
Una vez ya instalados y configurados los rpms de Qt (anexo 2) que vienen en el
instalador de Linux Fedora Core 3 lo lanzamos a correr en donde podremos visualizar
la siguiente pantalla.

Pasos:

a. Creación de un nuevo proyecto (C ++ Project). Esta parte es muy importante si
queremos desarrollar Software con esta librería.

b. Diseño de Widgets, Layouts, etc. Permiten al programador realizar ajustes de diseño
como se va a presentar al usuario.

c. Creación del main o función principal del proyecto (main.cpp). Como todo proyecto
realizado en C++ debe tener una función principal.

d. Guardamos el proyecto (recomendable guardarlo en una sola carpeta). Al hacer esto
observamos que las interfaces gráficas (formularios) tienen la extensión *.ui
e. Es necesario abrir una consola y ubicarnos en el directorio donde está guardado el
proyecto para la generación del Makefile, headers e implementación. Estos archivos
son necesarios para la compilación de cualquier proyecto realizado con Qt Designer.

Ejemplo.
Generación del Makefile

Qmake o Makefile nombre del proyecto.pro

Generación del archivo headers.h, es muy importante ya que en la función main del
proyecto se requiere este archivo.

uic –o headers.h widgets.ui
Generación del archivo de implementación.cpp

uic –o archivo.cpp impl
headers.h widgets.ui

Con esto logramos compilar la interfaz gráfica (el archivo creado con Qt Designer).
Al abrir el archivo con un editor de texto notarán que los *.ui no están escritos en C++
sino que están escritos en lenguaje XML, uic ( User Interface Compiler ) decodifica la
información que esta en formato XML y la pasa a C++ Compilación del proyecto con en
el comando

Make
Creación del archivo ejecutable. Este archivo aparecerá de color verde y con el mismo
nombre del proyecto guardado, basta con solo ejecutar un doble clic en el mismo
desde el explorador de Linux o ejecutar ./ ejecutable desde una consola [www15].

PyGTK
GTK+ es la librería gráfica (toolkit) sobre la que se sustenta todo el interfaz gráfico de
GNOME. Es una librería que contiene todo lo necesario para el desarrollo de interfaces
gráficas, permitiendo la posibilidad de crear todo tipo de widgets, desde los más
básicos, como botones, etiquetas, cajas de texto, hasta cosas más complejas como
selectores de ficheros, colores, fuentes, cajas de texto multilínea con soporte para todo
tipo de efectos sobre el texto, etc.

Posiblemente PyGTK sea la segunda opción más utilizada para la creación de
interfaces gráficas con Python, solo por detrás de wxPython, con la que compite de tú
a tú. PyGTK, como podemos suponer por su nombre, es un binding de GTK, la
biblioteca utilizada para desarrollar GNOME.
PyGTK cuenta con una API muy clara, limpia y elegante y es, además, muy sencillo de
aprender, solo superado en ese aspecto por Tkinter. PyGTK también cuenta con
grandes herramientas para construir la interfaz de forma gráfica, como Glade o
Gazpacho.

Un punto negativo es que, hasta hace poco, era necesario instalar X11 para poder usar
PyGTK en Mac OS, dado que GTK no había sido portado. Actualmente se puede utilizar
el GTK+ OS X Framework que se encuentra todavía en versión beta.

PyGTK se distribuye bajo licencia LGPL.

Algunas aplicaciones escritas con PyGTK son Deluge, Exaile, Listen, Envy, WingIDE,
DeVeDe o emesene.

Veamos el código de la aplicación de ejemplo en PyGTK:

import pygtk
import gtk

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("destroy", gtk.main_quit)

box = gtk.VBox(False, 0)
window.add(box)

label = gtk.Label("Hola Mundo")
c1 = gtk.CheckButton(label="Uno")
c2 = gtk.CheckButton(label="Dos")
entry = gtk.Entry()
button = gtk.Button("Aceptar")

box.add(label)
box.add(c1)
box.add(c2)
box.add(entry)
box.add(button)

window.show_all()

gtk.main()
Pros: Popularidad, sencillez, herramientas.
Contras: Ligeramente más complicado de instalar y distribuir en Mac OS.
Recomendado para: Cualquier tipo de aplicación. Especialmente interesante para
Gnome.

PyQt
Es posible que PyQt, el binding de Qt para Python, sea la menos popular de las cuatro
opciones, aunque es un toolkit sencillo de utilizar y con muchas posibilidades. Es
especialmente interesante para el desarrollo en KDE, dado que Qt es la librería
utilizada para crear este entorno.

No obstante el interés en Qt no se limita a KDE, sino que es una biblioteca
multiplataforma que, además, desde la versión 4, utiliza widgets nativos para las
distintas plataformas (anteriormente Qt emulaba el aspecto de la plataforma en la que
corría).

Como aplicación de RAD se puede utilizar Qt Designer.

PyQt utiliza un modelo de licencias similar al de Qt, con una licencia dual GPL/PyQt
Commercial. Si nuestro programa es compatible con la licencia GPL, es decir, si vamos
a publicar el código fuente y permitir a los usuarios modificar nuestra aplicación,
podremos usar PyQt sin más preocupaciones. En caso contrario tendremos que pagar
para obtener una licencia comercial.

Un par de ejemplos de aplicaciones que usan PyQt son Eric y QTorrent.

El código de la aplicación de ejemplo en PyQt tendría el siguiente aspecto:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Form(QWidget):
  def __init__(self):
    QWidget.__init__(self)
   layout = QVBoxLayout()
   layout.addWidget(QLabel("Hola mundo"))
   layout.addWidget(QCheckBox("Uno"))
   layout.addWidget(QCheckBox("Dos"))
   layout.addWidget(QLineEdit())
   layout.addWidget(QPushButton("Aceptar"))

   self.setLayout(layout)

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()




Pros:            Sencillez,          herramientas,               multiplataforma.
Contras: Ligeramente más complicado de instalar y distribuir en Mac OS. Licencia.
Recomendado para: Cualquier tipo de aplicación. Especialmente interesante para
KDE.

				
DOCUMENT INFO
Categories:
Tags:
Stats:
views:11
posted:3/30/2012
language:
pages:9