Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Scripts: Python, Perl y Otros > Python


Like Tree2Me Gusta
  • 1 Post By Erik#
  • 1 Post By Erik#

Respuesta Crear Nuevo Tema
 
LinkBack Herramientas Desplegado
Antiguo 05-mar-2009, 08:18   #1
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Curso de interfaces graficas en Python [TKinter]

Curso de interfaces graficas con Python [Tkinter]

1.Introducción

Hola de nuevo, el lenguaje python complementandolo con TK (Tool Kit) se podria hacer cosas grandes, por eso, voy a enseñaros de lo más basico a crear juegos.
Puede que no llegueis a hacer juegos como con PyGame, porque, TK, principalmente es un entorno grafico más de texto, pero vereis que sera de gran utilidad.
txefo le gusta esto.
  Responder Citando
Antiguo 05-mar-2009, 08:19   #2
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

2.Conseguimos TK

Principalmente, este curso sera orientado a Linux, por supuesto, hacia debian, pero igualmente, intentare ser muy global.
Para conseguir TK para python en windows con activepython o python 2.5.2 ya nos viene por defecto.

En Linux, para descargarlo, buscamos los paquetes python-tk si usamos Debian, ubuntu por el synaptic y usamos otro por google.
  Responder Citando
Antiguo 05-mar-2009, 08:19   #3
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

3.Activando los modulos de TK

Para activar los modulos de TK, nosotros utilizaremos esto:

[code=python]from Tkinter import *[/code]

Hay otra forma que es:

[code=python]import Tkinter[/code]

Pero yo aconsejo la primera, que es al que se lleva utilizando de toda la vida.
  Responder Citando
Antiguo 05-mar-2009, 08:19   #4
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

4.Creando un formulario (vacío)

Para crear los forms, primero importaremos:

[code=python]from Tkinter import *[/code]

Despues, utilizaremos la función:

[code=python]root = Tk()[/code]

Que creara un identificador, y por ultimo, cerramos el identificar:

[code=python]root.mainloop()[/code]

El resultado del código total, sera:

[code=python]from Tkinter import *
root = Tk()
root.mainloop()[/code]

Cuando inicieis esto, vereis que ya tenemos nuestro formulario vacío.
  Responder Citando
Antiguo 05-mar-2009, 08:20   #5
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

5.Nuestra primera aplicación, hola mundo

Como siempre, en todos los lenguajes, la primera aplicación es hola mundo, y ahora vereis como se crea un label, espero que se os quede, porque aparte de crear la aplicación aprendemos lo basico sobre labels.
Primero, debemos poner todo el código que hemos aprendido al crear forms.

[code=python]from Tkinter import *
root = Tk()
root.mainloop()[/code]

Y ahora, como os dije antes, root sera importante, fijaros:

[code=python]holamundo = Label(root, text="¡Hola Mundo!")[/code]

Como veis, creamos el declarador llamado holamundo, que contiene un widget de caracter "LABEL", antes de nada, usaremos root para que el programa identifique esa funcion como tkinter, y luego, usamos una coma y ponemos text=, que sera la función que usaremos para introducir una variable, algun texto, etc...

Pero despues de esto, si lo comprobais antes de pasar a este siguiente punto, vereis que no sale nada o os da error.
Pues, para declarar este label en el form y ahora atentos, podreis utilizar dos formas, pack o grid, pack, hace un autoajuste y lo coloca donde el desea, pero con grid, puedes elegir columnas, lineas, situación...
Nosotros usaremos grid para elegir columnas y lineas, y ahora llega el toque final:

[code=python]holamundo.grid(row=1, column=1)[/code]

Y ahora si juntamos todo:

[code=python]from Tkinter import *
root = Tk()
holamundo = Label(root, text="¡Hola Mundo!")
holamundo.grid(row=1, column=1)
root.mainloop()[/code]
  Responder Citando
Antiguo 05-mar-2009, 08:20   #6
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

6.Empezamos con los buttons

Los widgets buttons, sirven para efectuar una función.
Esa función se declara antes con def(): y despues se introduce una subfuncion en el button llamada command, pero eso lo veremos más tarde en este fasciculo.
Lo primero es la declaración de sintaxis:

[code=python]nombre = Button(root, texto del boton, comando de funcion, tamaño de ancho y/o alto)
grid.nombre(linea, columna)[/code]

Esta sintaxis es la que necesitaremos para crear un button, ahora, profundicaremos en cada una de estas partes.
Primero, el texto del boton, es el tipico "label" que saldra en un boton, por ejemplo si queremos que el boton ponga "De acuerdo" escribiremos:
[code=python]Button(... text="De acuerdo" ...)[/code]
En ese de acuerdo, podemos poner lo que queramos.
Ahora seguiremos con el comando de función, bueno, esto, antes de nada, tenemos que crear la función que queremos con lambda o def, nosotros usaremos def, bueno, la sintaxis de def es:

[code=python]def nombre de la funcion():
código de la función[/code]

En el nombre de la función, pondremos como queremos que se llame la función, en el ejemplo que haremos más adelante se llamara holamundo.
Y donde código de función ponemos el codigo que queremos, en nuestro caso para el ejemplo final pondremos:

[code=python]holamundolbl = Label(root, text="¡Hola Mundo!")
holamundolbl.grid(row=2, column=1)[/code]

Muy bien, una vez tenemos el nombre de la funcion y el código, donde command=, pondremos:

[code=python]Button(...command=holamundo...)[/code]

Esto llamara a la función holamundo, y por ultimo, veremos el ancho o alto del button, nosotros por defecto siempre usaremos el width=20, que es el ancho de 20.

[code=python]Button(...width=20)[/code]

Muy bien, ahora que ya tenemos nuestro button y sus partes, haremos el ejemplo:

[code=python]def holamundo():
holamundolbl = Label(root, text="¡Hola Mundo!")
holamundolbl.grid(row=2, column=1)
holamundo = Button(root, text="Activar ¡Hola Mundo!", command=holamundo, width=20)
holamundo.grid(row=1, column=1)[/code]

Muy bien, y ahora complementamos los modulos y funciones de formulario:

[code=python]from Tkinter import *
def holamundo():
holamundolbl = Label(root, text="¡Hola Mundo!")
holamundolbl.grid(row=2, column=1)
root = Tk()
holamundo = Button(root, text="Activar ¡Hola Mundo!",command=holamundo, width=20)
holamundo.grid(row=1, column=1)
root.mainloop()[/code]

Listo, lo probamos y et voila, button activado.
  Responder Citando
Antiguo 05-mar-2009, 08:20   #7
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

Quitarle los signos de exclamación u os saltara error.
  Responder Citando
Antiguo 05-mar-2009, 08:20   #8
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

7.Utilizamos TextBox's


Los textbox's en Python principalmente, hasta más adelante los usaremos con Strings, osea así, cadenas de texto.
Antes que nada, tendriamos que declarar el nombre del textbox como variable de string, eso lo podemos hacer poniendo esto:

[code=python]mi_variable_string = StringVar()[/code]

De esta manera, mi_variable_string que seria el nombre de vuestra variable, sera identificada como String, ahora, vamos a la declaración del textbox.

[code=python]el_nombre_de_nuestro_textbox = Entry(root, textvariable=mi_variable_string)[/code]

De esta manera, nuestro textbox cuando escribamos almacenara ese texto en la variable mi_variable_string.
Para utilizar las variables de string de los TextBox, cuando empleemos ese contenido, tendremos que hacerlo incluyendo .get() al final, nuestro resultado quedaria así, imaginaos que ahora lo queremos mostrar por consola y no por grafica, quedaria algo así:

[code=python]print mi_variable_string.get()[/code]

Espero que os haya gustado esta lección, más adelante aprenderemos a usar numeros en este tipo de variables.
  Responder Citando
Antiguo 05-mar-2009, 08:21   #9
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

8.CheckBox & IntVar()

Bueno, despues de estar muerto varios meses (2) he decidido continuarlo y lo continuamos con el checkbox e introduciendo las variables numericas en Tk.
Cuando comence con esto del PyTk habia un error que me mataba, no sabia construir variables numericas en Python, pero pensando un poco probe varias combinaciones IntegerVar(), VarInt(), VarInteger()... hasta que probe IntVar() y lo consegui, el resultado de una variable numerica:

[code=python]mi_int_var = IntVar() # Creando una variable numerica[/code]

Y bien, volviendo al tema principal, hablaremos sobre los checkbox, para los que no sabes que es, son unos cuadrados de selección que se utilizan en formularios de contacto, supscripción... Estos cuadrados a diferencia de los RadioButton (los veremos más adelante) solo puede haber 1 clickeado.

Bueno, la syntax del widget checkbutton es la siguiente:

[code=python]check = CheckButton(root, text="Lo que saldra al lado", var=variable_que_usaremos)
check.grid()[/code]

Donde check seria el nombre de nuestro widget, CheckButton indicamos que sera un Cuadrado de selección, root es nuestro identificador, Lo que saldra al lado es lo que saldria al lado para informar que pasa o que seleccionas al clickar ese cuadrado y variable_que_usaremos es la variable con la que identificamos nuestro checkbutton.

Un ejemplo sencillo seria este:

[code=python]var = IntVar()
check = Checkbutton(root, text="Hola mundo", variable=var)
check.grid()[/code]

Y ahora podriamos saber si ese cuadrado ha sido seleccionado haciendo un if:

[code=python]def funcion_presionada_por_button():
if var.get():
print "El checkbutton fue seleccionado"
else:
print "El checkbutton no fue seleccionado"
[/code]

De esta manera le decimos que si la variable var del checkbutton contiene algo osea así una seleccion nos salga algo y por contra otra cosa, donde funcion_presionada_por_button es la funcion o mejor llamado el command que llamamos desde un button creado por nosotros.

Y ahora, os dejo un ejemplo total para que practiqueis y lo veais más claro:

[code=python]from Tkinter import *
def verificar():
if var.get():
print "El checkbutton fue seleccionado"
else:
print "El checkButton no fue seleccionado"
root = Tk()
var = IntVar()
check = Checkbutton(root, text="Seleccionado/ No seleccionado", variable=var)
cm = Button(root, text="Verificar", command=verificar, width=20)
check.grid()
cm.grid()
root.mainloop()[/code]

Si me equivoque en algo o quereies preguntar algo, postear.
En la próxima lección aprenderemos los textarea
  Responder Citando
Antiguo 05-mar-2009, 08:21   #10
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

9.Nuestra segunda aplicación, Calculadora básica

Antes que nada agradecer a todos los que leen el curso
Y bueno, os dejo este código con lo que hemos ido aprendiendo.
Hay algunas cosas que olvide, son pequeñas cosas que algunas di por sentadas y otras ni me acorde...
Desde nuestro identificador podemos definir el titulo de nuestra ventana:

[code=python]identificador.title('Nombre de la aplicacion')[/code]

Si sigues el curso sabras que el identificador es root, y bueno, otra cosa es que las columnas y las linias (row, column) empiezan en 0,0 , osea así la row principal es 0 y la column principal es 0.

Y bueno, aqui os dejo la aplicación de aprendizaje:

[code=python]from Tkinter import *
def calc_sumar():
print a.get()+b.get()
lblt = Label(root, text="Total: " + str(a.get()+b.get()))
lblt.grid(row=3, column=0)
def calc_restar():
print a.get()-b.get()
lblt = Label(root, text="Total: " + str(a.get()-b.get()))
lblt.grid(row=3, column=0)
def calc_mult():
print a.get()*b.get()
lblt = Label(root, text="Total: " + str(a.get()*b.get()))
lblt.grid(row=3, column=0)
def calc_div():
print a.get()/b.get()
lblt = Label(root, text="Total: " + str(a.get()/b.get()))
lblt.grid(row=3, column=0)
root = Tk()
root.title('PyCalk - Python/TK')
a = IntVar()
b = IntVar()
atxt = Entry(root, textvariable=a,width=15)
btxt = Entry(root, textvariable=b,width=15)
cbs = Button(root, text="Sumar", command=calc_sumar,width=10)
cbr = Button(root, text="Restar", command=calc_restar,width=10)
cbm = Button(root, text="Multiplicar", command=calc_mult,width=15)
cbd = Button(root, text="Dividir", command=calc_div,width=10)
atxt.grid()
btxt.grid()
cbs.grid(row=0, column=1)
cbr.grid(row=1, column=1)
cbm.grid(row=2, column=0)
cbd.grid(row=2, column=1)
root.mainloop()
[/code]

Datos:

Nombre: PyCalk (Python Calculadora TK)
Lineas: 34
Funciones: 4
Nombre real: Calculadora básica de cuatro operaciones (Añadirle más si quereis con la libreria math )
  Responder Citando
Antiguo 05-mar-2009, 08:21   #11
Erik#
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: Curso de interfaces graficas en Python [TKinter]

10.Textarea e incluimos los scrollbar

Bueno, despues de todo un fin de semana sin internet, por estar fuera de mi casa [...] Ya puedo porfin escribir lo que queria sobre los textarea que incluye documentación sobre scrollbar...
En esta lección usaremos mucho la X y la Y, como ya sabreis mucho son las variables que señalan las coordenadas o las posiciones X = Horizontal, Y = Vertical .
Bueno, vamos allá...

Primero, la sintaxis de un textarea, pues, es simple, como todos los widgets de las interfaces TK en Python:

[code=python]<nombre_del_textarea> = Text(<identificador>, height=h, width=w)[/code]

Como veis, en <nombre_del_textarea> sera la variable que defina el textarea, donde Text es el nombre del widget con el que identificamos, el <identificador> es el identificador TK que declaramos al inicio, en el curso por defecto es root, height=h es la altura de largo y width=w de ancho, por defecto, en el curso usaremos h = 20, w = 40, y nos quedara algo así:

[code=python]textarea = Text(root, height=20, width=40)[/code]

Como veis cumplimos los requisitos básicos del widget, pero tendriamos un problema, al añadir mucho contenido de texto, perdiriamos el hilo, pues no tenemos un objeto en todo caso un scrollbar que nos suba o nos baje para ver todo el texto, para eso como he mencionado varias veces anteriormente usaremos un scrollbar, su sintaxis es:

[code=python]<nombre_del_scrollbar> = Scrollbar(<identificador>, command=<nombre_del_textarea>.<funcion_de_vista>)[/code]

Donde nombre del scrollbar ponemos la variable que guarda nuestro widget, la palabra Scrollbar identifica como scrollbar nuestro objeto, el identificador es el identificador TK que declaramos anteriormente, en el curso por defecto es TK, <nombre_del_textarea> seria el nombre de la variable que usamos anterior mente y luego separado por un punto <funcion_de_vista>, puede ser X o Y, nostros, por defecto usaremos la Y, que es vertical, ejemplo:

[code=python]scroll = Scrollbar(root, command=textarea.yview)[/code]

Como veis, le llamamos scroll, lo identificamos como un scrollbar, usamos nuestro identificador tk que inicia los objetos que es "root", y luego como veis añadimos el nombre de nuestro textarea y le añadimos una vista horizontal con el yview, si quereis, cambiando y por x podeis conseguir una vista horizontal.

Ahora tenemos de configurar al textarea indicandole que tiene un scrollbar preparado, ¿como lo hacemos? con la funcion configure:

[code=python]<nombre_del_textarea>.configure(yscrollcommand=<no mbre_del_scrollbar>.set)[/code]

Donde nombre del textarea ponemos el nombre de la variable y donde nombre del scrollbar idem, pero con el del scrollbar...

y por ultimo, declaramos las posiciones de inicio de nuestros objetos, primero el textarea, le indicamos que señalara que el textarea se pondra a la izquierda (<):

[code=python]<nombre_del_textarea>.pack(side=LEFT)[/code]

donde nombre del textarea ponemos la variable, y como veis con pack indicamos la fijación de lugar y con side la posicion.

Y con el scrollbar, algo parecido:

[code=python]<nombre_del_scrollbar>.pack(side=RIGHT, fill=Y)[/code]

En el nombre del scrollbar el nombre de la variable, con el pack fijamos el lugar, con side indicamos que ira a la derecha del textarea y con fill indicamos si sera horizontal o vertical y por supuesto ponemos vertical (siempre tiene que estar en mayúscula (Y,X)).

Y aqui os dejo un ejemplo total:

[code=python]from Tkinter import *
root = Tk()
textarea = Text(root, height=20, width=40)
scroll = Scrollbar(root, command=textarea.yview)
textarea.configure(yscrollcommand=scroll.set)
textarea.pack(side=LEFT)
scroll.pack(side=RIGHT, fill=Y)
root.mainloop()[/code]

Pronto más info.
Espero que os haya gustado, buenas noches
rucoman le gusta esto.
  Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
[NetBeans] Creacion de Interfaces Graficas SmartGenius Java 1 12-jun-2009 11:12
Problema con botones en Tkinter (Python) Vrah_Rak§ha Python 4 11-feb-2009 14:22
Que gestor de interfaces graficas me recomiendan suriv Carbide C/C#/C++ 0 22-ago-2008 00:23
Interfaces entre C y Ensamblador Strike Noir Carbide C/C#/C++ 2 20-mar-2007 11:56
Sabe alguien de un buen curso de SEGURIDAD INFORMATICA o PYTHON en GRANADA (ESP Tarugazo Off-Topic 0 26-sep-2006 17:52



Portal Hacker
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0