Python3 & Tkinter (En construcción)

Buenas estimados usuarios deseo compartir con ustedes una de las utilidades de las librerías de python que se llama Tkinter() para crear interfases gráficas con python que a la verdad que me ha encantado estar aprendiéndolo y quisiera que les gustara es muy largo este post ,tratare de resumirlo o mejor que pueda , esta herramientas multé-plataforma y nos sirve para crear aplicaciones tanto para Linux, Mac Os como para Windows y es completamente Free
si estas en linux

sudo apt-get install python3-tk

Para crear una simple caja

from tkinter import *
root = Tk()
root.title("Titulo de la ventana")
"""
Aquí va todo
el código de los widges
"""
root.mainloop()
todos los widges

Tipos de widges

  1. Menu
  2. Label
  3. Entry
  4. Radiobutton
  5. Checkbutton
  6. Text & Scrollbar
  7. Scale
  8. Spinbox

Ya con esto podemos empezar a estudiar tkinter

Toda caja debería tener un frame dentro en este post lo usaremos
el mismo modifica los tipos de Widges a tener dentro y le da el tamaño a la ventana

contenedor = Frame(root)
contenedor = LabelFrame ( si queremos ponerle titulo a nuestro frame )

para terminar este frame debemos empaquetarlo con

contenedor.pack()

Básico para continuar

Se que esta parte es tediosa pero si la dominan crean me que se les ara mas fácil entender todo

FRAME()

Argumentos sobre contenedores Frame
contenedor = Frame(root)
contenedor.config ( args1 , args2 , args3 )
todas las obiones se separan con ","

Args:
1. width="650",height="360"
2. bg="colores de fondo"
3. relief="groove"
4. bd=35
5. cursor="pirate"
6. resizable(False,True))

Argumentos para el contenedor

1. ajustar e ancho y alto
2. ajusta el color blue,grey,white,black o #00015
3. ajusta el relieve sunken,groove
4. ajusta el ancho del borde
5. ajusta el tipo de crusor a utilizar|
6. Nos permite maximizar o minimizar eje de las x and y

ya sabiendo que el frame es una caja donde van a estar los widges para posicionarlos dentro , usaremos el método Grid mas adelante veremos sus usos …

Posicionamiento por Grid

GRID()

contenedor.grid(row=0,column=0)
widge.grid ( args1 , args2 , args3 )

Args:

1. row=0,column=0
2. sticky="wsne"
3. columnspan=2
4. rowspan=4
5. padx=5)
6. pady=5)

Argumentos para los grid:

1. posiciona por la fila 0 y columna 0
2. posiciona el widge a la derecha "w","e" por coordenadas
3. se expande por 2 columnas
4. se expande por 2 filas
5. separa los widges en espacios por el eje de las x ,padx
6. separa los widges en espacios por el eje de las y ,pady

Argumentos para empaquetar

empaquetaremos de ejemplo contenedor pero se pueden empaquetar widges pero la forma de colocarlos dentro del Frame seria diferente no el que estamos usando Grid

PACK()

pack(side=”Top”)
anchor=”W”
contenedor.pack ( args1 , args2 , args3 )
Args:

1. contenedor.pack(side="left") #left,right,top,button
2. contenedor.pack(anchor="N") #NSWE
3. contenedor.pack(fill="y")
4. contenedor.pack(fill="y",expand="True")
5. contenedor.pack(fill="both",expand="True")

Argumentos para empaquetar:
1. pune la ubicación para nuestro widge
2. ubica por puntos cardinales N S W E NS SW WE
3. rellena todo por el eje de las y
4. rellena todo por el eje de las y y las x
5. rellena todo por el eje de las y y las x

IMPORTANTE
VARIABLES

Tipos de variables a almacenar

variables
1 valor1 = StringVar()
2 valor2 = IntVar()
3 valor3 = IntVar(StringVar())

1. almacena variables de tipo string
2. almacena variables de tipo entreo
3. convierte variables de tipo cadena a entero

Almacenar variables

var1 = Widge(contenedor,Args,textvariable=valor1)
var2 = Widge(contenedor,Args,variable=valor2)
var2 = Widge(contenedor,Args,textvariable=valor3 ) 

1. valor almacenara lo se entre en var2
2. valor almacenara lo se entre en var1
3. valor almacenara lo se entre en var2

métodos sobre variables

1. variable = var.set("valor")
2. variable = var.get()           

1. define el valor de la variable por lo que este dentro de los ()
2. recibe los datos almacenados en la variable var para usarla


PARA EL WIDGE Text() ,Entry()


1. variable = var.insert(0, "texto a insertar")
2. variable = var.del(0,END)
3. variable = var.get()

1. inserta el texto dentro de un entry() o Text()
2. borra los datos almacenados en la variable var para usarla
3. recibe los datos almacenados en la variable var para usarla

Eventos sobre widge Button

def funcion():
     root.destroy()
     ventana2.quit()
     ventana2.withdraw()
     entrada.test("")

1. cierra el evento de la ventana
2. cierra la 2 ventada que tengamos
3. solo la oculta no cerraría la
4. define o borra datos en Entry(),Label()

btn = Button(contenedor , Args1 , Args2)

Argumentos:

1. text = "botón 1"
2. command=funcion )
3. command=lambda:funcion )

1. Da el nombre al botón
2. ejecuta una la funcion que hayamos creado previamente
3. evita que la funcion se ejecute por defecto

Fin del básico

Hasta ahora solo hemos visto las configuraciones ,para mi es lo mas importante ya que nos facilita su entendimiento , solo queda manos a la obra a aprender como elaborarlos y hacer nuestras propias apps

ventana

from tkinter import *
root=Tk()
root.title("Mi primera app")
root.mainloop()

Menu

from tkinter import *
root=Tk()
root.title("Mi primera app")

##### menu#
barra_menu=Menu(root)
root.config(menu=barra_menu)
root.geometry("450x380")

##### crea el menu Archivo Edicion Ayuda

archivoMenu=Menu(barra_menu,tearoff=0)
archivoEdicion=Menu(barra_menu,tearoff=0)
archivoAyuda=Menu(barra_menu,tearoff=0)

##### coloca Archivo Edicion Ayuda en el menus

barra_menu.add_cascade(label="Archivo",menu=archivoMenu)
barra_menu.add_cascade(label="Edicion",menu=archivoEdicion)
barra_menu.add_cascade(label="Ayuda",menu=archivoAyuda)

"""
agrega al menu Archivo Edicion Ayuda el submenu con titulo

Abrir
cerrar
guardar
"""
##### los agrega submenus al menu

archivoMenu.add_command(label="Abrir")
archivoMenu.add_command(label="cerrar")
archivoMenu.add_command(label="guardar")
archivoMenu.add_separator()
archivoMenu.add_command(label="salir",command=root.destroy)

archivoEdicion.add_command(label="cortar")
archivoEdicion.add_command(label="pegar")
archivoEdicion.add_command(label="renombar")

archivoAyuda.add_command(label="Acerca de: ")

##### evento principal
root.mainloop()

Frames

contenedor1=LabelFrame(root,width=420,height=380,text="Programa consulta")
contenedor1.grid(row=0,column=0,padx=5,pady=5)
contenedor2=LabelFrame(root,width=420,height=60,text="obsiones")
contenedor2.grid(row=1,column=0,padx=5,pady=5)

Label

comentario1=Label(contenedor,text="Introduce tu Nombre:",justify="left").grid(row=1,column=0,padx=5,pady=5)
comentario2=Label(contenedor,text="Introduce tu Apellido:",justify="left").grid(row=2,column=0,padx=5,pady=5)

Entry

#variables almacenadas en var1 var2
var1=StringVar()
var2=StringVar()

datos1=Entry(contenedor1,textvariable=var1).grid(row=1,column=2,padx=5,pady=5)
datos2=Entry(contenedor1,textvariable=var2).grid(row=2,column=2,padx=5,pady=5)

Radio Button

variable_obsion=IntVar()

if variable_obsion == 0:
     pass
if variable_obsion == 1:
     pass
else:
     pass

seleccion=Radiobutton(contenedor1,text="Hombre",variable=variable_obsion,value=0).grid(row=3 ,column=0,sticky=W)
seleccion=Radiobutton(contenedor1,text="Mujer",variable=variable_obsion,value=1).grid(row=4 ,column=0,sticky=W)
seleccion=Radiobutton(contenedor1,text="Sin comentarios",variable=variable_obsion,value=2).grid(row=5 ,column=0,sticky=W)

Checkbutton

eleccion1=IntVar()
eleccion2=IntVar()
eleccion3=IntVar()

if eleccion1 == 1:
    pass
if eleccion2 == 1:
    pass
if variable_obsion == 1:
    pass

mutliple_seleccion=Checkbutton(contenedor1,text="Soltero",variable=eleccion1,onvalue=1,offvalue=0).grid(row=3,column=1,sticky=W)
mutliple_seleccion=Checkbutton(contenedor1,text="Con pareja",variable=eleccion2,onvalue=1,offvalue=0).grid(row=4,column=1,sticky=W)
mutliple_seleccion=Checkbutton(contenedor1,text="Tranquilo",variable=eleccion3,onvalue=1,offvalue=0).grid(row=5,column=1,sticky=W)

Combobox

NOTA:

Debemos importar la clase ttk:

from tkinter import ttk
combo = ttk.Combobox(contenedor1)

#definimos como un case o switch en otros lenguajes
variable_combo = combo.get()

if variable_combo == 'Adolecente' :
     pass
if variable_combo == 'Maduro' :
     pass
if variable_combo == 'Anciano' :
     pass

combo['values'] = ('Adolecente','Maduro','Anciano')

#valor por defeto a mostrar
combo.current(0)

combo.grid(row=4,column=2,padx=8)

Text && Scrollbar

texto = Text(contenedor1,height=10,width=40)
texto.grid(row=6,column=1,columnspan=2)

#creamos unda barra rotatoria

scroll=Scrollbar(contenedor1,command=texto.yview)
scroll.grid(row=6,column=2,sticky="nse")

#lo hacemos operativo para usar
texto.config(yscrollcommand=scroll.set)

Scale

#Escala
variable_escala =StringVar()
texto2=Label(contenedor1,text="Salario Base CUP $: ").grid(row=6,column=0,sticky="nw",pady=2)

#escala del 250 al 1250
escala=Scale(contenedor1,orient=HORIZONTAL,variable=variable_escala,from_=250,to_=1250,tickinterval=230,sliderlength=15,length=200)
escala.grid(row=6,column=0,pady=2)

Spinbox

texto3=Label(contenedor1,text="Anos de esperiencia laboral: ").grid(row=7,column=0,sticky="nw")

#Spinbox
spin = Spinbox(contenedor1,from_=1,to_=60).grid(row=7,column=0,sticky="sw")
Compartir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *