[Python] Curso de Python con Interfaces graficas TK

Iniciado por Erik#, 23 Octubre 2008, 21:44 PM

0 Miembros y 1 Visitante están viendo este tema.

TonyElGordo

Que bueno, espero que lo continues.
A mi me da error cuando añado dentro de text= caracteres como ¡ .

Dice que Non-ASCII character... Pero lo quito y va genial.

Erik#

Seguire pero ahora no tengo tiempo, gracias por seguirlo.

Erik#

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:

Código (python) [Seleccionar]
mi_variable_string = StringVar()

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.

Código (python) [Seleccionar]
el_nombre_de_nuestro_textbox = Entry(root, textvariable=mi_variable_string)

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í:

Código (python) [Seleccionar]
print mi_variable_string.get()

Espero que os haya gustado esta lección, más adelante aprenderemos a usar numeros en este tipo de variables.

Erik#

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:

Código (python) [Seleccionar]
mi_int_var = IntVar() # Creando una variable numerica

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:

Código (python) [Seleccionar]
check = CheckButton(root, text="Lo que saldra al lado", var=variable_que_usaremos)
check.grid()


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:

Código (python) [Seleccionar]
var = IntVar()
check = Checkbutton(root, text="Hola mundo", variable=var)
check.grid()


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

Código (python) [Seleccionar]
def funcion_presionada_por_button():
   if var.get():
      print "El checkbutton fue seleccionado"
   else:
      print "El checkbutton no fue seleccionado"


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:

Código (python) [Seleccionar]
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()


Si me equivoque en algo o quereies preguntar algo, postear.
En la próxima lección aprenderemos los textarea :)

Infernal.Root

Gracias esta muy bien explicada la info,

                               Atte: Infernal.Root

Banti

 :o :o

Este thread ni lo habia visto!!!!
Voy a leerlo esta noche!

Erik#

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:

Código (python) [Seleccionar]
identificador.title('Nombre de la aplicacion')

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:

Código (python) [Seleccionar]
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()


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 :))

Erik#

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:

Código (python) [Seleccionar]
<nombre_del_textarea> = Text(<identificador>, height=h, width=w)

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í:

Código (python) [Seleccionar]
textarea = Text(root, height=20, width=40)

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:

Código (python) [Seleccionar]
<nombre_del_scrollbar> = Scrollbar(<identificador>, command=<nombre_del_textarea>.<funcion_de_vista>)

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:

Código (python) [Seleccionar]
scroll = Scrollbar(root, command=textarea.yview)

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:

Código (python) [Seleccionar]
<nombre_del_textarea>.configure(yscrollcommand=<nombre_del_scrollbar>.set)

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 (<):

Código (python) [Seleccionar]
<nombre_del_textarea>.pack(side=LEFT)

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:

Código (python) [Seleccionar]
<nombre_del_scrollbar>.pack(side=RIGHT, fill=Y)

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:

Código (python) [Seleccionar]
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()


Pronto más info.
Espero que os haya gustado, buenas noches :)

Dreykon