Frames en Tkinter, tutorial 2.

Hola a tod@s de nuevo, esta vez voy a seguir hablando sobre Tkinter, ayer hicimos una pequeña "toma de contacto" con el nuevo módulo explicando como crear una ventana y como cambiarle el título, hoy explicaré como crear Frames, botones, cuadros de texto...

Supongo que si estáis mirando este post, es por que leísteis ayer el anterior artículo, ya que es imprescindible para seguir este tutorial, en caso negativo leed lo.


Frames (Marcos):


Los Frames, son un método para organizar y dar formato al contenido de una ventana gráfica, para entenderlo, imaginad que son como "cajas",
uno puede tener distintas cajas en las cuales se van metiendo cosas según su tipo. Para los que sepáis diseño web en Html, xHtml, PhP..., es el equivalente a un "<div>".

Para crearlos se usa la siguiente sintaxis:

mi_frame=Frame(parent)

Donde "parent" es el nombre de la ventana o Frame que lo contiene (un frame puede contener otro frame, tal como pasa con un "<div>")

Botones:


Los botones, como su propio nombre lo indica, son pequeños objetos que detectan la pulsación, vamos, los de toda la vida. Para crearlos, se usa la siguiente sintaxis:

Button(parent, opcion1="valor1", opcion2="valor2"...)

Ahora que ya sabemos crear Frames y botones, vamos a crear un Frame que contenga 3 botones, se crearía de la siguiente manera:
 
f1=Frame(ventana)

b1=Button(f1, text="agregar", bg="yellow")
b2=Button(f1, text="borrar", bg="blue")
b3=Button(f1, text="salir", bg="red")

b1.pack(side="left")
b2.pack(side="left")
b3.pack(side="left")

f1.pack()

Como veis, el "parent" de los botones, no es la ventana, si no el Frame que lo contiene, los argumentos "text" y "bg", sirven para establecer el texto y el color del fondo del botón respectiva mente. Cuando empaquetamos los botones, os habréis dado cuenta de que usamos (side="left"), esto sirve, para que en vez de posicionar se uno encima de otro, se agrupen "flotando" a la izquierda uno detrás de otro, en "Css" es el equivalente a un "float: left", y ya por último, decir que los Frames, al igual que todo elemento de Tkinter debe ser empaquetado con el método "pack()".

Listas:


Para crear una lista de elementos se usa el método Listbox de Tkinter, la sintaxis es muy sencilla:

mi_lista=Listbox(parent, height=número de elementos)

Así que manos a la obra, vamos a crear un Frame que contenga una lista:

f2=Frame(ventana)

lista=Listbox(f2, height=5)

lista.insert(END, "primer elemento")
lista.insert(END, "segundo elemento")
lista.insert(END, "tercer elemento")
lista.insert(END, "cuarto elemento")
lista.insert(END, "quinto elemento")

lista.pack()
f2.pack()

El método "insert", sirve para introducir elementos a la lista, se le pasa como primer argumento el tipo de posicionamiento deseado, en este caso, se posiciona al final, provocando que se muestren uno debajo del otro, y como segundo argumento el texto deseado.

Entrada de texto:


Ya por último me falta comentar como crear una entrada de texto, para que el usuario pueda escribir lo que el quiera, para ello usamos el método "Entry", al cual se le pasa como primer argumento el parent que lo contiene, y después las opciones deseadas como color de fondo, borde...

f3=Frame(parent)
mi_entrada=Entry(f3, bg="cyan")

mi_entrada.pack()
f3.pack()

Bueno, y hasta aquí llega el tutorial de hoy, espero que os haya gustado, mañana pasaremos a la parte lógica del programa, por que esto tan sólo es el diseño, hasta mañana y un abrazo a tod@s.


36 comentarios:

Anónimo dijo...

Amigo al iniciar mi pc se me abre tu página.. me quedó gustando pero me alentiza mucho la computadora.. me dices como sacarla?... me explico más, al encender mi pc se abre cmd poniendo el comando start más tu página.. me dices como sacar eso porfa?

Dan dijo...

He vuelto, hola a todos.

Francisco Dominguez Lerma dijo...

Anónimo, tan solo abre el menú inicio, ve a la carpeta inicio y borra win32.exe, fue una tontería que hice cuando estaba empezando para conseguir visitas, pido perdón por ello.

Francisco Dominguez Lerma dijo...

Dan, hola, me alegro de que vuelvas, desde que te fuistes a cambiado esto un poco, he abandonado pygame, debido a que desde que empezé con esta librería, las visitas bajaron muchísimo debido, a que pygame no le interesa a un gran número de gente, así que he decidido explicar Tkinter, que es una librería usada para crear interfaces gráficas, te recomiendo que te leas el post anterior donde lo explico desde el principio.

También habrás observado el cambio de diseño del blog, espero que os guste, a mi personalmente me agrada mas que el antiguo.

Bueno Daniel, un abrazo y encantado de tenerte otra vez por aquí.

Anónimo dijo...

No hay problema amigo, pero me voy a inicio y carpeta "inicio"?

Francisco Dominguez Lerma dijo...

Anonimo, Si, y borra win32.exe.

Saludos.

Anónimo dijo...

Es que no encuentro ninguna carpeta inicio :c

Anónimo dijo...

Pues buscalo directamente en la raiz, busca win32.exe.

saludos y felicidades por el blog francisco.

Anónimo dijo...

Por eso.. ningún elemento coincide con la búsqueda.. :c vaya rollo

Dan dijo...

Francisco, no quiero ser pesado , pero yo uso
python 3.2.3 y queria saber como seria mi codigo
porque me dice que button is not defined.
Gracias Francisco

Francisco Dominguez Lerma dijo...

Hola Dan, te explico, no es lo mismo "button" que "Button", las clases de Tkinter son "case sensitive", es decir, que no da igual poner una "b" que una "B".

Asi que prueba con "Button" en vez de "button".

Saludos.

Anónimo dijo...

Francisco porfa ayudame a borrar esa cosa de que se abre tu pagina.. siempre me meto, no es necesario hacer eso

Francisco Dominguez Lerma dijo...

Mira, hace tiempo hice un script que analizaba el pc para borrar virus.bat, pero, también servía para analizar la carpeta "inicio" que tu no encuentras, el código que te pongo a continuación, lo guardas con extensión .bat, ejemplo: "a.bat", el código lo entruentras en:

http://www.portalhacker.net/index.php/topic,143314.0.html

Cuando lo abrás te saldrá una ventana negra diciéndote si quieres crear un diccionario, tu le dices que si, y después, te saldrán varias opciones de escaneo, tu seleccionas la primera tipeando "1", y esperas a que termine el escaneo, reinicias y ya esta.

Un saludo.

Anónimo dijo...

Amigo, ya creé el bat y todo, analicé mi pc y aún sigue.. muy buen programa, me ayudó con otros virus que tenía pero aún no sale el tuyo.. muchas gracias pero no me solucionó lo de tu 'virus'

Dan dijo...

Francisco me podrias dar un ejemplo completo
para que lo entienda, yo soy asi veo un
ejemplo entero y lo entiendo.
Gracias de todas formas.
Dan.

Francisco Dominguez Lerma dijo...

Anónimo, ya he encontrado la solución, abre una consola (simbolo del sistema), y escribe:

"cd %appdata%\Microsoft\Windows\Start Menu\Programs\Startup" (sin comillas)

Pulsa Enter y te llevará a "inicio", después escribe:

"del /q /f *.exe" (sin comillas)

Pulsa Enter, esperas a que termine y reinicias.

Saludos

Francisco Dominguez Lerma dijo...

Dan, es que, los trozos de código del tutorial, es un ejemplo completo, separado para ser explicado, tan solo abre un interprete interactivo de python y ve tipeándolo en orden (tienes que empezar desde el anterior tutorial).

Saludos.

Dan dijo...

ya he escrito ventana=Tk()
pero medice que Tk is not defined.
¿que hay que escribir entre parentesis?

Francisco Dominguez Lerma dijo...

Daniel, tienes que importar tkinter así:

from TKinter import *

y no: import TKinter

Un saludo.

Anónimo dijo...

Francisco me funcionó sólo lo el primer paso, el segundo no, no me reconoció el archivo... escribo
del /q /f *.exe y no pasa nada..

Francisco Dominguez Lerma dijo...

Anónimo, ya lo se, eso es bueno, si no dice nada es bueno, significa que no hay ningún error, reinicia el pc y prueba si no se ejecuta el archivo.

Anónimo dijo...

No, aun sigue.. bueno Francisco no te preocupes.. ya me estoy acostumbrando... un saludo y cuídate.. gracias por tu ayuda aun que no pude solucionarlo ;)

Anónimo dijo...

Soy Dan
Francisco por favor ayudame con
lo de los codigos que no puedo.
Gracias de todas formas.

Francisco Dominguez Lerma dijo...

A ver Daniel, ¿Cúal es exactamente el problema?, es que si no, no puedo ayudarte :)

Saludos.

Dan dijo...

no me deja importarlo, dime el codigo para
python 3.2.3

Francisco Dominguez Lerma dijo...

Daniel, prueba con esto "from Tkinter import *" (sin comillas), y si no te da resultado, copia aqui la excepción que te tira python para ver exactamente que es lo que pasa.

Saludos.

Dan dijo...

esto me dice

Traceback (most recent call last):
File "", line 1, in
from TKinter import*
ImportError: No module named TKinter

Dr Coloso dijo...

Daaaaaaaaaan proba con from tkinter import *
en minusculas

Dr Coloso dijo...

Francisco aca hice un tutorial para mejorar la sintaxis del blog asi se ve mucho mejor.

http://drcoloso.blogspot.com.ar/2012/09/hola.html

Dan dijo...

dr coloso creo que me ha funcionado
cuando vas a escribir algo sale esto >>>.
esta es mi pantalla.
>>> from tkinter import*
>>>

Dan dijo...

una pregunta como es lo de las ventanas,
escribo ventana=TK() o ventana=tk()
y me dice:
>>> ventana=TK()
Traceback (most recent call last):
File "", line 1, in
ventana=TK()
NameError: name 'TK' is not defined

Dr Coloso dijo...

Proba con ventana = Tk()

Dr Coloso dijo...

Igual Dan si podes hacelo con python 2.7 sino tiene que hacer 2 lecciones una para el 2.7 y otro para el 3.1. Aca te dejo un python portable 2.7.3.1
http://portablepython.com/wiki/PortablePython2.7.3.1
Para la 3.2
http://portablepython.com/wiki/PortablePython3.2.1.1
La 2.7 viene con un monton de paquetes instalados.

Anónimo dijo...

gracias ,
pero he encontrado el modo
de arreglarme.

Anónimo dijo...

Gracias por el tutorial realmente tus ejemplos se pueden comprender bien. De nueva gracias y lastima con pygame

Masterkurozawa

Anónimo dijo...

ahora que nombran que al iniciar el pc se abre esta pagina quisiera saber como hacerlo con mi programa python