Archive for junio 2009

WIDGETS

23 junio 2009

Estos son los Widgets que venimos aprendiendo hasta el momento.
Le saque foto a cada cosa para qe qede mas lindo..
espero ke les guste..

WX.FRAME


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxFrame

WX.PANEL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxPanel

WX.STATICTEXT


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxStaticText

WX.TEXTCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxTextCtrl

WX.TEXTCTRL (con multilinea)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        self.ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxtextctrlmultilinea

WX.BUTTON


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxButton

WX.COMBOBOX


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN | wx.CB_READONLY)
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxcombobox

WX.COMBOBOX (editable.. se puede agregar algo)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN )
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxcombobox

WX.MESSADEDIALOG y WX.EVT.BUTTON (ponerle funcion a los botones!)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN)
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,200))
        self.cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,195))
        self.cuadro_edad.SetRange(0,100)
        fecha_nacimiento = wx.StaticText(panel, -1, 'F Nac', pos = (20,230))
        cuadro_nacimiento = wx.DatePickerCtrl(panel, -1, pos = (90,225), size = (150, -1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        self.Bind(wx.EVT_BUTTON, self.OnSalir, boton_cancelar)
        self.Bind(wx.EVT_BUTTON, self.OnAceptar, boton_aceptar)
        self.ventana.Show()
        return True

    def OnSalir(self, evt):
        self.ventana.Close()

    def OnAceptar(self, evt):
        ingresoapellido = self.cuadro_apellido.GetValue()

        dialogo = wx.MessageDialog(self.ventana, u'Estimado/a %s, sus datos fueron guardados' % (ingresoapellido), u'Información', wx.OK | wx.ICON_INFORMATION)
        dialogo.ShowModal()
        dialogo.Destroy()

aplicacion = App()
aplicacion.MainLoop()

mesagedialog

WX.SPINCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        ventana = wx.Frame(parent = None , title = u'Ingreso' , size = (300,300) , pos = (250,250))
        panel = wx.Panel(ventana , -1)
        texto_edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,25))
        cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,20))
        cuadro_edad.SetRange(0,110)
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,240))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

spinctrl

WX.DATEPICKERCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN)
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,200))
        self.cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,195))
        self.cuadro_edad.SetRange(0,100)
        fecha_nacimiento = wx.StaticText(panel, -1, 'F Nac', pos = (20,230))
        cuadro_nacimiento = wx.DatePickerCtrl(panel, -1, pos = (90,225), size = (150, -1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        self.Bind(wx.EVT_BUTTON, self.OnSalir, boton_cancelar)
        self.Bind(wx.EVT_BUTTON, self.OnAceptar, boton_aceptar)
        self.ventana.Show()
        return True

    def OnSalir(self, evt):
        self.ventana.Close()

    def OnAceptar(self, evt):
        ingresoapellido = self.cuadro_apellido.GetValue()

        dialogo = wx.MessageDialog(self.ventana, u'Estimado/a %s, sus datos fueron guardados' % (ingresoapellido), u'Información', wx.OK | wx.ICON_INFORMATION)
        dialogo.ShowModal()
        dialogo.Destroy()

aplicacion = App()
aplicacion.MainLoop()

dtaepickerctrl

instalate algo

12 junio 2009

Hablamos muchísimo de los ejercicios que realizamos en el curso, pero omitimos en todo momento información sobre que usamos para llevar a cabo esos ejemplos de python. Y como una gran mayoría de usuarios no tiene la posibilidad de contar con computadoras equipadas con software libre. La idea de este post es ayudar a quienes tienen otras cosas a instalar las aplicaciones que van a necesitar para aprender lo que estamos aprendiendo. En este ejemplo los aplicativos corren en Windowrs. Asi que ahi vamos.

Python
Bueno en el caso nuestro, el curso se orienta a aprender a programar utilizando como lenguaje Python

Para poder disfrutar de este lenguaje podemos seguir el siguiente tutorial que explica como instalarlo

Geany
Como editor sencillo para andar probando estas cuestiones de codigo utilizamos uno que es genial. Geany. Para instalarlo pueden visitar la zona de descarga de la pagina oficial, para descargar geany

ipython
Cuando nos cansamos (literalmente) de los colores de la terminal saltamos a probar una vuelta de tuerca al asunto. ipython salio a resolvernos el tema de andar probando comandos o pequeñas lineas que nos podían solucionar el planteo inicial.

MySQL, phpMyAdmin
A medida que fuimos avanzando con el tema vimos en varias oportunidades el manejo de un sistema de bases de datos como el de MySQL y llegamos a utilizar un buen manejador y administrador de bases de datos como phpMyAdmin.

Una buena opción para poder manejar esa artillería de herramientas bajo estas condiciones es contar con la ayuda de XAMPP.

Y como siempre para instalarlo podemos seguir el siguiente tutorial.

wxPython
Y por ultimo y no por algo en particular nos toca la herramienta que estamos aprendiendo a los golpes que es ni mas ni menos que wxPython

Para poder disfrutar de esta herramienta tenemos que instalar el siguiente archivo. Y una ves instalado no tenemos excusa para seguir aprendiendo.

Momentos del SanCa

4 junio 2009

Volvíamos de la merienda de todos los días. Nuestras cabezas estaban todavía con los planteos de los ejercicios 76 y 75. Con la energía renovada nos sentamos en nuestros escritorios y acometimos con la tarea. Éstas son algunas de las imágenes de tan importante gesta.

El ejercicio75 consiste en que a través de un menú generar altas y consultas a una base de datos MySQL desde python. El ejercicio 76 consiste en que a partir de dos tuplas, una con nombre y otra con apellido, presentar esos datos por pantalla en una tabla con cabecera y los datos.

 

Momentos del SanCa

Momentos del SanCa

 

Momentos en el SanCa...

Momentos en el SanCa...

 

Momentos del SanCa...

Momentos del SanCa...

Primera etapa

4 junio 2009

Hoy terminamos la primera etapa de nuestro camino. Somos menos que al principio, lamentablemente, pero estamos en marcha. A partir del lunes comenzaremos con programación de apliaciones GUI con la biblioteca wxPython, y un nuevo horizonte se nos aparece. Es una oportunidad para recomenzar, un nuevo mojón en el hermoso arte de aprender. Felicitaciones a los que han emprendido este camino y han perseverado en el aprendizaje. Aunque las cosas a veces no se ven muy claras, el seguir andando y poniendo garra junto a nuestros compañeros nos acerca cada día un poco más al objetivo de aprender, compartir, cooperar.

Algunas cosas que hemos visto hasta hoy:

Aplicaciones.
Lenguajes de programación
Lenguaje de máquina – Binario – Lenguajes de bajo y alto nivel –
Compilados e interpretados

Estructuras lógicas – Diagramas – Abstracción de realidades y
problemáticas de todos los días llevadas a diagramas de flujo.

Python – Intérprete Python – Hola mundo

Editores de texto. Geany como IDE de desarrollo.

Variables, constantes, tipos de datos, cadenas, tuplas, listas,
diccionarios, boolean, unicode. Métodos básicos de c/u de ellas.
Ejercicios con cada uno y combinados. (sort, upper, slice, operaciones
básicas, keys, y todo lo que se les ocurra.

Bucles for, while. Condiciones if, elif, else.

Escritura en archivos. write(), readline(), open(), close(), etc

Definición y uso de funciones. Argumentos.

Módulo pickle. Importar. Módulos. Creación de módulos.

Clases. Métodos especiales (__init__(), etc). Instancias. Objetos. Métodos.

Conexión a bases de datos. (MySQLdb). Conocimiento de lenguaje SQL
standard desde consola y administrador web (PHPMyadmin). Aplicaciones
con menúes, conexión, consultas, ABM.