UNIDAD 5: PRORAMAS DIARIOS
PROGRAMA 1
# Programa 1 U5.py
# Tortuga 1 U5
from turtle import *
t=Turtle()
#ari=Turtle()
setup(640, 480, 55, 0)
screen=t.getscreen()
#ari.left(90)
t.left(90)
#ari.left(120)
t.forward(200)
t.undo()
t.forward(150)
screen.exitonclick()
PROGRAMA 2
# Programa 2 U5.py
# Tortuga 2 U5
from turtle import *
t=Turtle()
screen=t.getscreen()
t.rt(90)
t.fd(300)
t.left(90)
t.fd(70)
t.undo()
t.fd(50)
t.home()
t.penup()
t.fd(30)
t.pendown()
t.pencolor("blue")
t.fd(200)
t.pencolor("green")
t.pensize(8)
t.fd(100)
t.left(90)
t.bk(50)
t.rt(90)
t.bk(100)
t.penup()
t.goto(-50,-100)
t.clear()
t.home()
screen.exitonclick()
PROGRAMA 3
# Programa 3 U5.py
# Tortuga 3 U5
from turtle import *
t=Turtle()
screen=t.getscreen()
setup(450,150)
screensize(300,100)
title("Programación Visual")
t.hideturtle()
t.dot(10,"blue")
t.penup()
t.goto(50,50)
#RGB
#t.dot(15,"red")
screen.colormode(255)
t.dot(15,250,0,0)
screen.exitonclick()
PROGRAMA 4
# Prorama 4 U5.py
# Tortuga 4 U5
from turtle import *
t=Turtle()
screen=t.getscreen()
def cuadro(x):
for i in range(4):
t.fd(x)
t.rt(90)
def fig():
for i in range(36):
cuadro(50)
t.fd(15)
t.rt(10)
t.pencolor("indigo")
#t.pencolor(255,0,127)
t.speed(0)
cuadro(50)
fig()
screen.exitonclick()
PROGRAMA 5
#figuras geometricas
from turtle import *
t=Turtle()
t.ht()
screen=t.getscreen()
t1 = Turtle()
t2 = Turtle()
t1.up()
t1.setpos(-70, 0)
t1.down()
t2.up()
t2.setpos(70, 0)
t2.down()
# loop for pattern
for i in range(20):
t1.forward(2+2*i)
t1.left(45)
t2.forward(2+2*i)
t2.left(90)
# reset first turtle
# another remain as it is
t1.reset()
exitonclick()
PROGRAMA 6
# Figuras geometricas
from turtle import *
t=Turtle()
screen=t.getscreen()
'''
#circulo
width(10)
color("navy")
circle(50,360,10)
#turtle.circle(radius, extent=None, steps=None)
#Parameters
#radius – a number, extent – a number (or None), steps – an integer (or None)
#cuadrado
penup()
goto(-100,-100)
color("firebrick3")
pendown()
shape("square")
shapesize(5)
#imagen
penup()
goto(-200,150)
pendown()
color("purple3")
shape("square")
shapesize(5)
bgpic("logorosa.png")
left(500)
reset()
#punto
def punto(x=0, y=0):
if pen()["pendown"]:
up()
else:
begin_fill()
shape("circle")
onscreenclick(goto,1)
punto(20,50)
'''
#barra de colores
def barra():
colores = ("magenta4","Violetred1", "purple4", "orange","MediumOrchid2","maroon2", "orchid4")
up()
goto(-300,-180)
width(30)
for liscolor in colores:
color(liscolor)
down()
forward(600)
up()
backward(600)
left(90)
forward(66)
right(90)
barra()
exitonclick()
PROGRAMA 7
# TKINTER 1
from tkinter import *
ventana=Tk()
ventana.geometry("300x300")
ventana.title("Unidad 5")
etiqueta=Label(ventana, text="Hola mundo tkinter")
etiqueta.pack()
boton=Button(ventana, text="Minimiza", command=ventana.iconify)
boton.pack()
ventana.mainloop()
PROGRAMA 8
# TKINTER 2
from tkinter import *
import time
def parpadear():
ventana.iconify()
time.sleep(3)
ventana.deiconify()
ventana=Tk()
ventana.title("Segunda ventana en tkinter")
btn=Button(ventana, text="Evento", command=parpadear)
btn.pack()
ventana.mainloop()
PROGRAMA 9
# TKINTER 3
from tkinter import *
def imprime():
print("Acabas de Imprimir")
cuadro=Tk()
cuadro.title("Dos botones")
btnS=Button(cuadro, text="Salir", fg="Red", command=cuadro.quit)
btnS.pack(side=LEFT)
btnI=Button(cuadro, text="Imprime", fg="Blue", command=imprime)
btnI.pack(side=RIGHT)
cuadro.mainloop()
PROGRAMA 10
# TKINTER 5
from tkinter import *
ventana=Tk()
ventana.geometry("300x300")
ventana.title("Posicionamiento")
btn=Button(ventana, text="posicion uno").place(x=10,y=10)
lbl1=Label(ventana, text="posicion dos").place(x=200,y=10)
lbl2=Label(ventana, text="posicion tres").place(x=10,y=45)
lbl3=Label(ventana, text="posicion cuatro").place(x=200,y=40)
ventana.mainloop()
PROGRAMA 11
# TKINTER 6
from tkinter import *
def saludo():
print("te saludo")
def chiquito():
ventana.iconify()
ventana=Tk()
ventana.title("Ejercicio ")
ventana.geometry("400x200")
lbl1=Label(ventana, text="Click para saludar",fg="Red").place(x=30,y=50)
btn1=Button(ventana, text="Saludar", command=saludo,bg="Red",fg="White").place(x=200,y=45)
lbl2=Label(ventana, text="Click para minimizar", fg="Blue").place(x=30,y=100)
btn2=Button(ventana, text="Minimiza", command=chiquito,bg="Blue",fg="White").place(x=200,y=95)
ventana.mainloop()
PROGRAMA 12
# TKINTER 7
from tkinter import *
def saludar():
print("Hola "+nombre.get()+" "+apellidoP.get()+" "+apellidoM.get())
ventana=Tk()
ventana.geometry("400x200")
ventana.title("Capture")
nombre=StringVar()
apellidoP=StringVar()
apellidoM=StringVar()
nombre.set("Escribe tu nombre")
lbl1=Label(ventana, text="Nombre: ").place(x=10,y=10)
bxb1=Entry(ventana, textvariable=nombre).place(x=170,y=10)
lbl2=Label(ventana, text="Apellido Paterno: ").place(x=10,y=40)
bxb2=Entry(ventana, textvariable=apellidoP).place(x=170,y=40)
lbl3=Label(ventana, text="Apellido Materno: ").place(x=10,y=70)
bxb3=Entry(ventana, textvariable=apellidoM).place(x=170,y=70)
btn=Button(ventana, text="Te saludo", command=saludar).place(x=10,y=100)
ventana.mainloop()
PROGRAMA 13
# TKINTER 8
from tkinter import *
def operacion():
numero=num.get()
if opcion.get()==1:
total=numero*10
elif opcion.get()==2:
total=numero*20
elif opcion.get()==3:
total=numero*30
elif opcion.get()==4:
total=numero*40
elif opcion.get()==5:
total=numero*50
else:
total=numero*numero
print("El total de las operaciones es: "+str(total))
ventana=Tk()
opcion=IntVar()
num=IntVar()
ventana.title("Botones de radio")
ventana.geometry("400x300")
etiqueta1=Label(ventana,text="Escribe un numero: ").place(x=20,y=20)
cajaNumero=Entry(ventana,bd=3,cursor="Cross",textvariable=num).place(x=130,y=20)
etiqueta2=Label(ventana,text="Escribe tu opcion: ").place(x=20,y=50)
x10=Radiobutton(ventana,text="x10",value=1,variable=opcion).place(x=20,y=80)
x20=Radiobutton(ventana,text="x20",value=2,variable=opcion).place(x=70,y=80)
x30=Radiobutton(ventana,text="x30",value=3,variable=opcion).place(x=120,y=80)
x40=Radiobutton(ventana,text="x40",value=4,variable=opcion).place(x=20,y=110)
x50=Radiobutton(ventana,text="x50",value=5,variable=opcion).place(x=70,y=110)
cuadro=Radiobutton(ventana,text="cuadro",value=6,variable=opcion).place(x=120,y=110)
btn=Button(ventana,text="Realiza operacion",command=operacion).place(x=20,y=149)
ventana.mainloop()
PROGRAMA 14
# TKINTER 10
from tkinter import *
from tkinter import messagebox
def obtener():
#print(valor.get())
lbl2=Label(ventana,text=valor.get()).place(x=80,y=170)
messagebox.showinfo("Mensaje ","Selección es:"+valor.get())
ventana=Tk()
valor=StringVar()
ventana.title("Uso de Spinbox")
ventana.geometry("400x300")
lbl=Label(ventana,text="Ejemplo 1 spinbox").place(x=20,y=20)
combo=Spinbox(ventana,values=("uno","dos","tres","cuatro","cinco")).place(x=20,y=50)
lbl2=Spinbox(ventana,from_=1,to=10,textvariable=valor).place(x=20,y=110)
boton=Button(ventana,text="Obtener valor Spinbox",command=obtener).place(x=80,y=140)
mainloop()
PROGRAMA 15
# TKINTER 11
from tkinter import *
from tkinter import messagebox
messagebox.showinfo("Di hola","Pues hola")
res=messagebox.showinfo("showinfo Di hola", "Pues hola")
print("res1 "+str(res))
print(type(res))
res1=messagebox.showwarning("Advirte","Mensaje de advertencia")
print("res "+str(res1))
print(type(res1))
res2=messagebox.askquestion("Pregunta","¿Les gusta programar?")
print("res2 "+str(res2))
print(type(res2))
res3=messagebox.askokcancel("Pregunta 2","Puedes decir no")
print("res3 "+str(res3))
print(type(res3))
res4=messagebox.askyesno("Pregunta 3","Pero te conviene decir Si")
print("res4 "+str(res4))
print(type(res4))
res5=messagebox.askretrycancel("Pregunta 4","Era un Si")
print("res5 "+str(res5))
print(type(res5))
#Hacer un cuestionario para determinar
#el grado de gusto por la programación
#Este cuestionario es para conocer tus gustos al programar
'''
r=messagebox.showinfo("Información","Este cuestionario es para conocer tus grustos al programar")
while(r=="ok"):
continuar
'''
PROGRAMA 16
# TKINTER 12
from tkinter import *
ventana=Tk()
ventana.geometry("616x390")
ventana.title("Imagenes")
#PNG y GIF
imagen=PhotoImage(file="fondoAwN.png")
imgbtn=PhotoImage(file="Sin título.png")
fondo=Label(ventana,image=imagen).place(x=0,y=0)
btn=Button(ventana,image=imgbtn).place(x=10,y=10)
mainloop()
PROGRAMA 17
# TKINTER 15
from tkinter import *
ventana=Tk()
c=Canvas(ventana,width=400,height=400)
ventana.geometry("500x500")
c.place(x=0,y=0)
c.create_rectangle(0,0,200,200,fill="blue")
c.create_rectangle(200,0,400,200,fill="yellow")
c.place(x=0,y=0)
ventana.mainloop()
PROGRAMA 18
# TKINTER 16
from tkinter import *
ventana=Tk()
c=Canvas(ventana,width=400,height=400)
ventana.geometry("500x500")
c.place(x=0,y=0)
c.create_rectangle(0,0,200,200,fill="blue")
c.create_rectangle(200,0,400,200,fill="yellow")
c.place(x=0,y=0)
c.create_line(50,250,80,250,width=4.0,fill="pink")
c.place(x=0,y=0)
c.create_polygon(100,0,150,200,50,200,fill="green")
ventana.mainloop()
PROGRAMA 19
# TKINTER 17
from tkinter import *
import tkinter
top = Tk()
Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
top.mainloop()
'''
from tkinter import *
import tkinter
top = Tk()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
C1 = Checkbutton(top, text = "Musica", variable = CheckVar1, \
onvalue = 1, offvalue = 0, height=5, \
width = 20, )
C2 = Checkbutton(top, text = "Video", variable = CheckVar2, \
onvalue = 1, offvalue = 0, height=5, \
width = 20)
C1.pack()
C2.pack()
top.mainloop()
'''
PROGRAMA 20
# Chinito con gorrito chino
from tkinter import *
def sombrero():
c.create_polygon(160,210,340,210,250,150, fill=color.get())
def fondo():
c.create_rectangle(0,0,500,500, fill=color.get())
c.create_oval(180,180,320,320, fill="#FFEBCD")
c.create_polygon(160,210,340,210,250,150, fill="yellow")
c.create_line(210,240,240,240, width=3.0)
c.create_line(260,240,290,240, width=3.0)
c.create_line(230,270,270,270, width=3.0)
ventana=Tk()
color=StringVar()
color1=StringVar()
c=Canvas(ventana,width=500,height=500)
ventana.geometry("500x500")
c.place(x=0,y=0)
c.create_rectangle(0,0,500,500, fill="#4682B4")
c.create_oval(180,180,320,320, fill="#FFEBCD")
c.create_polygon(160,210,340,210,250,150, fill="yellow")
c.create_line(210,240,240,240,width=3.0)
c.create_line(260,240,290,240,width=3.0)
c.create_line(230,270,270,270,width=3.0)
combc=Spinbox(ventana,values=("blue","yellow","red","black","white"),textvariable=color).place(x=0,y=0)
btn=Button(ventana,text="Cambiar sombrero",command=sombrero).place(x=165,y=18)
btn1=Button(ventana,text="Cambiar fondo",command=fondo).place(x=285,y=18)
ventana.mainloop()
PROGRAMA 21
# Chinito
from tkinter import *
ventana=Tk()
c=Canvas(ventana, width=500, height=500)
v=Canvas(ventana, width=500, height=500)
ventana.geometry("500x500")
c.place(x=0,y=0)
c.create_rectangle(0,0,500,500, fill="#4682B4")
c.create_oval(180,180,320,320, fill="#FFEBCD")
c.create_polygon(160,210,340,210,250,150,fill="yellow")
c.create_line(210,240,240,240,width=3.0)
c.create_line(260,240,290,240,width=3.0)
c.create_line(230,270,270,270,width=3.0)
ventana.mainloop()
PROGRAMA 22
# Ejemplo de CheckBox
from tkinter import *
def revisa():
cadena = ""
if (si.get()):
cadena += "Genial"
else:
cadena += "NO"
if (no.get()):
cadena += " Que mal"
else:
cadena += " SI"
monitor.config(text=cadena)
# Configuración de la raíz
ventana = Tk()
ventana.title("Amor")
ventana.config(bd=15)
si = IntVar() # 1 si, 0 no
no = IntVar() # 1 si, 0 no
imagen = PhotoImage(file="fondoAwN.png")
Label(ventana, image=imagen).pack(side="left")
frame = Frame(ventana)
frame.pack(side="left")
Label(frame, text="¿Te gusta programar?").pack(anchor="w")
Checkbutton(frame, text="Si", variable=si, onvalue=1,
offvalue=0, command=revisa).pack(anchor="w")
Checkbutton(frame, text="No", variable=no, onvalue=1,
offvalue=0, command=revisa).pack(anchor="w")
monitor = Label(frame)
monitor.pack()
# Finalmente bucle de la aplicación
ventana.mainloop()
PROGRAMA 23
# Arco
import tkinter
arriba=tkinter.Tk()
c=tkinter.Canvas(arriba, bg="blue",height=250,width=300)
cord=10,50,240,210
print(cord)
arc=c.create_arc(cord,start=0,extent=150,fill="red")
c.pack()
arriba.mainloop()
PROGRAMA 24
# Agenda 1
from tkinter import *
from tkinter import messagebox
lista=[]
def guardar():
print("guarda")
def eliminar():
print("elimina")
ventana=Tk()
nombre=StringVar()
app=StringVar()
apm=StringVar()
correo=StringVar()
telefono=StringVar()
conteliminar=StringVar()
colorFondo="SkyBlue1"
colorLetra="gray1"
ventana.title("Agenda con archivos")
ventana.geometry("700x500")
ventana.configure(background=colorFondo)
etiquetaTitulo=Label(ventana,text="Agenda con Archivos",bg=colorFondo, fg=colorLetra).place(x=270,y=10)
etiquetaN=Label(ventana,text="Nombre",bg=colorFondo,fg=colorLetra).place(x=50,y=50)
cajaN=Entry(ventana, textvariable=nombre).place(x=110,y=50)
etiquetaApp=Label(ventana,text="Apellido Paterno",bg=colorFondo,fg=colorLetra).place(x=50,y=80)
cajaApp=Entry(ventana, textvariable=app).place(x=150,y=80)
etiquetaApm=Label(ventana,text="ApellidosMaterno",bg=colorFondo, fg=colorLetra).place(x=50,y=110)
cajaApm=Entry(ventana, textvariable=apm).place(x=150,y=110)
etiquetaT=Label(ventana,text="Teléfono",bg=colorFondo, fg=colorLetra).place(x=50,y=140)
cajaT=Entry(ventana, textvariable=telefono).place(x=150,y=140)
etiquetaC=Label(ventana,text="Correo",bg=colorFondo, fg=colorLetra).place(x=50,y=170)
cajaC=Entry(ventana, textvariable=correo).place(x=150,y=170)
etiquetaEliminar=Label(ventana,text="Telefono",bg=colorFondo, fg=colorLetra).place(x=370,y=50)
spinTelefono=Spinbox(ventana, textvariable=conteliminar).place(x=450,y=50)
botonGuardar=Button(ventana,text="Guardar",command=guardar, bg="White",fg="grey0").place(x=180,y=200)
botoEliminar=Button(ventana, text="Eliminar",command=eliminar, bg="White",fg="grey0").place(x=490,y=80)
ventana.mainloop()
PROGRAMA 25
# Agenda 2
# REALIZAR UNA AGENDA PARA GUARDAR DATOS
# 26/05/2021
from tkinter import *
from tkinter import messagebox
lista=[]
def guardar():
n=nombre.get()
ap=app.get()
am=apm.get()
t=telefono.get()
c=correo.get()
lista.append(n+"$"+ap+"$"+am+"$"+t+"$"+c)
iniciarArchivo() #NUEVO, NO SE INICIABA EL ARCHIVO
escribirContacto()
messagebox.showinfo("Guardado","El contacto ha sido guardado correctamente")
nombre.set("")
app.set("")
apm.set("")
telefono.set("")
correo.set("")
consultar()
def eliminar():
removido=False
for elemento in lista:
arreglo=elemento.split("$")
if conteliminar.get()==arreglo[3]:
lista.remove(elemento)
removido=True
escribirContacto()
consultar()
if removido:
messagebox.showinfo("Eliminado","Elemento "+str(' '.join(arreglo))+" eliminado correctamente")
else:
continue
def consultar():
r=Text(ventana,width=80, height=15)
lista.sort()
valores=[]
r.insert(INSERT, "Nombre\t\tApellido P\t\tApellido M\t\tTélefono\t\tCorreo\n")
for elemento in lista:
arreglo=elemento.split("$")
valores.append(arreglo[3])
r.insert(INSERT, arreglo[0]+"\t\t"+arreglo[1]+"\t\t"+arreglo[2]+"\t\t"+arreglo[3]+"\t\t"+arreglo[4]+"\n")
r.place(x=20,y=260)
spinTelefono=Spinbox(ventana, value=(valores), textvariable=conteliminar).place(x=450,y=50) #AQUI FALTABA TEXTVARIABLE
r.config(state=DISABLED)#AQUI ESTABA MAL IDENTADO
def iniciarArchivo():
archivo=open("ag.txt","a")
archivo.close()
def cargar():
archivo=open("ag.txt","r")
linea=archivo.readline()
if linea:
while linea:
if lines[-1]=='\n':
linea=linea[:-1]
lista.append(linea)
linea=archivo.readline()
archivo.close()
def escribirContacto():
archivo=open("ag.txt","w")
lista.sort()
for elemento in lista:
archivo.write(elemento+"\n")
archivo.close
ventana=Tk()
nombre=StringVar()
app=StringVar()
apm=StringVar()
correo=StringVar()
telefono=StringVar()
conteliminar=StringVar()
colorFondo="LightSteelBlue"
colorLetra="Black"
ventana.title("Agenda con archivos")
ventana.geometry("700x500")
ventana.configure(background=colorFondo)
etiquetaTitulo=Label(ventana,text="Agenda con Archivos",bg=colorFondo, fg=colorLetra).place(x=270,y=10)
etiquetaN=Label(ventana,text="Nombre",bg=colorFondo,fg=colorLetra).place(x=50,y=50)
cajaN=Entry(ventana, textvariable=nombre).place(x=150,y=50)
etiquetaApp=Label(ventana,text="Apellido Paterno",bg=colorFondo,fg=colorLetra).place(x=50,y=80)
cajaApp=Entry(ventana, textvariable=app).place(x=150,y=80)
etiquetaApm=Label(ventana,text="Apellido Materno",bg=colorFondo, fg=colorLetra).place(x=50,y=110)
cajaApm=Entry(ventana, textvariable=apm).place(x=150,y=110)
etiquetaT=Label(ventana,text="Teléfono",bg=colorFondo, fg=colorLetra).place(x=50,y=140)
cajaT=Entry(ventana, textvariable=telefono).place(x=150,y=140)
etiquetaC=Label(ventana,text="Correo",bg=colorFondo, fg=colorLetra).place(x=50,y=170)
cajaC=Entry(ventana, textvariable=correo).place(x=150,y=170)
etiquetaEliminar=Label(ventana,text="Telefono",bg=colorFondo, fg=colorLetra).place(x=370,y=50)
spinTelefono=Spinbox(ventana, textvariable=conteliminar).place(x=450,y=50)
botonGuardar=Button(ventana,text="Guardar",command=guardar, bg="LightBlue",fg="Black").place(x=180,y=220)
botonEliminar=Button(ventana, text="Eliminar",command=eliminar, bg="Crimson",fg="Black").place(x=490,y=220)
ventana.mainloop()
PROGRAMA 26
# Fecha,dia,mes,año
# Hora,horas,minutos,segundos
#Es necesario importar las depencendias necesarias
from datetime import date
from datetime import datetime
#Día actual
today = date.today()
#Fecha actual
now = datetime.now()
print(today)
print(now)
#Date
print("El día actual es {}".format(today.day))
print("El mes actual es {}".format(today.month))
print("El año actual es {}".format(today.year))
#Datetime
print("El día actual es {}".format(now.day))
print("El mes actual es {}".format(now.month))
print("El año actual es {}".format(now.year))
print("La hora actual es {}".format(now.hour))
print("El minuto actual es {}".format(now.minute))
print("El segundo actual es {}".format(now.second))
'''
def current_date_format(date):
months = ("Enero", "Febrero", "Marzo", "Abri", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
day = date.day
month = months[date.month - 1]
year = date.year
messsage = "{} de {} del {}".format(day, month, year)
return messsage
now = datetime.now()
print("**",current_date_format(now))
'''
PROGRAMA 27
# tkinter1
'''
#!/usr/bin/env python
# -- coding: utf-8 --
# Las dos líneas siguientes son necesaias para hacer
# compatible el interfaz Tkinter con los programas basados
# en versiones anteriores a la 8.5, con las más recientes.
from tkinter import * # Carga módulo tk (widgets estándar)
from tkinter import ttk # Carga ttk (para widgets nuevos 8.5+)
# Define la ventana principal de la aplicación
raiz = Tk()
raiz.geometry('300x200') # anchura x altura
raiz.configure(bg = 'lavender')
raiz.title('Aplicación')
ttk.Button(raiz, text='Salir', command=quit).pack(side=BOTTOM)
# Si la persona presiona sobre el botón Cerrar 'X', o bien,
# sobre el botón 'Salir' el programa llegará a su fin.
raiz.mainloop()
'''
#!/usr/bin/env python
# -- coding: utf-8 --
from tkinter import *
from tkinter import ttk
# Crea una clase Python para definir el interfaz de usuario de
# la aplicación. Cuando se cree un objeto del tipo 'Aplicacion'
# se ejecutará automáticamente el método init() qué
# construye y muestra la ventana con todos sus widgets:
class Aplicacion():
def __init__(self):
raiz = Tk()
raiz.geometry('300x200')
raiz.configure(bg = 'light cyan')
raiz.title('Aplicación con clase')
ttk.Button(raiz, text='Salir',command=raiz.destroy).pack(side=BOTTOM)
raiz.mainloop()
# Define la función main() que es en realidad la que indica
# el comienzo del programa. Dentro de ella se crea el objeto
# aplicación 'mi_app' basado en la clase 'Aplicación':
def main():
mi_app = Aplicacion()
return 0
# Mediante el atributo name tenemos acceso al nombre de un
# un módulo. Python utiliza este atributo cuando se ejecuta
# un programa para conocer si el módulo es ejecutado de forma
# independiente (en ese caso __name__ = '__main__') o es
# importado:
if __name__ == '__main__':
main()
PROGRAMA 28
# tkinter2
from tkinter import *
from tkinter import ttk
# La clase 'Aplicacion' ha crecido. En el ejemplo se incluyen
# nuevos widgets en el método constructor __init__(): Uno de
# ellos es el botón 'Info' que cuando sea presionado llamará
# al método 'verinfo' para mostrar información en el otro
# widget, una caja de texto: un evento ejecuta una acción:
class Aplicacion():
def __init__(self):
# En el ejemplo se utiliza el prefijo 'self' para
# declarar algunas variables asociadas al objeto
# ('mi_app') de la clase 'Aplicacion'. Su uso es
# imprescindible para que se pueda acceder a sus
# valores desde otros métodos:
self.raiz = Tk()
self.raiz.geometry('300x200')
# Impide que los bordes puedan desplazarse para
# ampliar o reducir el tamaño de la ventana 'self.raiz':
self.raiz.resizable(width=False,height=False)
self.raiz.title('Ver info')
# Define el widget Text 'self.tinfo ' en el que se
# pueden introducir varias líneas de texto:
self.tinfo = Text(self.raiz, width=40, height=10)
# Sitúa la caja de texto 'self.tinfo' en la parte
# superior de la ventana 'self.raiz':
self.tinfo.pack(side=TOP)
# Define el widget Button 'self.binfo' que llamará
# al metodo 'self.verinfo' cuando sea presionado
self.binfo = ttk.Button(self.raiz, text='Info',
command=self.verinfo)
# Coloca el botón 'self.binfo' debajo y a la izquierda
# del widget anterior
self.binfo.pack(side=LEFT)
# Define el botón 'self.bsalir'. En este caso
# cuando sea presionado, el método destruirá o
# terminará la aplicación-ventana 'self.raíz' con
# 'self.raiz.destroy'
self.bsalir = ttk.Button(self.raiz, text='Salir',
command=self.raiz.destroy)
# Coloca el botón 'self.bsalir' a la derecha del
# objeto anterior.
self.bsalir.pack(side=RIGHT)
# El foco de la aplicación se sitúa en el botón
# 'self.binfo' resaltando su borde. Si se presiona
# la barra espaciadora el botón que tiene el foco
# será pulsado. El foco puede cambiar de un widget
# a otro con la tecla tabulador [tab]
self.binfo.focus_set()
self.raiz.mainloop()
def verinfo(self):
# Borra el contenido que tenga en un momento dado
# la caja de texto
self.tinfo.delete("1.0", END)
# Obtiene información de la ventana 'self.raiz':
info1 = self.raiz.winfo_class()
info2 = self.raiz.winfo_geometry()
info3 = str(self.raiz.winfo_width())
info4 = str(self.raiz.winfo_height())
info5 = str(self.raiz.winfo_rootx())
info6 = str(self.raiz.winfo_rooty())
info7 = str(self.raiz.winfo_id())
info8 = self.raiz.winfo_name()
info9 = self.raiz.winfo_manager()
# Construye una cadena de texto con toda la
# información obtenida:
texto_info = "Clase de 'raiz': " + info1 + "\n"
texto_info += "Resolución y posición: " + info2 + "\n"
texto_info += "Anchura ventana: " + info3 + "\n"
texto_info += "Altura ventana: " + info4 + "\n"
texto_info += "Pos. Ventana X: " + info5 + "\n"
texto_info += "Pos. Ventana Y: " + info6 + "\n"
texto_info += "Id. de 'raiz': " + info7 + "\n"
texto_info += "Nombre objeto: " + info8 + "\n"
texto_info += "Gestor ventanas: " + info9 + "\n"
# Inserta la información en la caja de texto:
self.tinfo.insert("1.0", texto_info)
def main():
mi_app = Aplicacion()
return 0
if __name__ == '__main__':
main()
PROGRAMA 29
# tkinter3
from tkinter import *
from tkinter import ttk
# Calcula coste de viaje con validación y cálculo inmediato
class Aplicacion():
def __init__(self):
self.raiz = Tk()
self.raiz.title("Alta Velocidad")
# Declara variables de control
self.num_via = IntVar(value=1)
self.ida_vue = BooleanVar()
self.clase = StringVar(value='t')
self.km = IntVar(value=1)
self.precio = DoubleVar(value=0.10)
self.total = DoubleVar(value=0.0)
# Define trazas con variables de control de los widgets Entry()
# para detectar cambios en los datos. Si se producen cambios
# se llama a la función 'self.calcular' para validación y para
# calcular importe a pagar
self.km.trace('w', self.calcular)
self.precio.trace('w', self.calcular)
# Llama a función para validar y calcular
self.calcular()
# Carga imagen para asociar a widget Label()
tren = PhotoImage(file='tren.png')
# Declara widgets de la ventana
# En los widgets de tipo Spinbox, Checkbutton y Radiobutton
# se utiliza la opción 'command' para llamar a la función
# 'self.calcular' para validar datos y calcular importe a
# pagar de forma inmediata
self.imagen1 = ttk.Label(self.raiz, image=tren,
anchor="center")
self.etiq1 = ttk.Label(self.raiz, text="Viajeros:")
self.viaje = Spinbox(self.raiz, from_=1, to=20, wrap=True,
textvariable=self.num_via,
state='readonly',
command=self.calcular)
self.idavue = ttk.Checkbutton(self.raiz, text='Ida y vuelta',
variable=self.ida_vue,
onvalue=True, offvalue=False,
command=self.calcular)
self.etiq2 = ttk.Label(self.raiz, text="Clase:")
self.clase1 = ttk.Radiobutton(self.raiz, text='Turista',
variable=self.clase, value='t',
command=self.calcular)
self.clase2 = ttk.Radiobutton(self.raiz, text='Primera',
variable=self.clase, value='p',
command=self.calcular)
self.clase3 = ttk.Radiobutton(self.raiz, text='Lujo',
variable=self.clase, value='l',
command=self.calcular)
self.etiq3 = ttk.Label(self.raiz,
text="Distancia (Kilómetros):")
self.dist = ttk.Entry(self.raiz, textvariable=self.km,
width=10)
self.etiq4 = ttk.Label(self.raiz, text="Precio:")
self.coste = ttk.Entry(self.raiz, textvariable=self.precio,
width=10)
self.etiq5 = ttk.Label(self.raiz, text="A Pagar (euros):")
self.etiq6 = ttk.Label(self.raiz, textvariable=self.total,
foreground="yellow", background="black",
borderwidth=5, anchor="e")
self.separ1 = ttk.Separator(self.raiz, orient=HORIZONTAL)
self.boton1 = ttk.Button(self.raiz, text="Salir",
command=quit)
self.imagen1.pack(side=TOP, fill=BOTH, expand=True,
padx=10, pady=5)
self.etiq1.pack(side=TOP, fill=BOTH, expand=True,
padx=10, pady=5)
self.viaje.pack(side=TOP, fill=X, expand=True,
padx=20, pady=5)
self.etiq4.pack(side=TOP, fill=BOTH, expand=True,
padx=10, pady=5)
self.coste.pack(side=TOP, fill=X, expand=True,
padx=20, pady=5)
self.etiq5.pack(side=TOP, fill=BOTH, expand=True,
padx=10, pady=5)
self.etiq6.pack(side=TOP, fill=BOTH, expand=True,
padx=20, pady=5)
self.separ1.pack(side=TOP, fill=BOTH, expand=True,
padx=5, pady=5)
self.boton1.pack(side=RIGHT, fill=BOTH, expand=True,
padx=10, pady=10)
self.raiz.mainloop()
def calcular(self, *args):
# Función para validar datos y calcular importe a pagar
error_dato = False
total = 0
try:
km = int(self.km.get())
precio = float(self.precio.get())
except:
error_dato = True
if not error_dato:
total = self.num_via.get() * km * precio
if self.ida_vue.get():
total = total * 1.5
if self.clase.get() == 'p':
total = total * 1.2
elif self.clase.get() == 'l':
total = total * 2
self.total.set(total)
else:
self.total.set("¡ERROR!")
def main():
mi_app = Aplicacion()
return 0
if __name__ == '__main__':
main()
PROGRAMA 30
# tkinter 3
from tkinter import *
from tkinter.ttk import *
window = Tk()
window.title("Welcome to LikeGeeks app")
selected = IntVar()
rad1 = Radiobutton(window,text='First', value=1, variable=selected)
rad2 = Radiobutton(window,text='Second', value=2, variable=selected)
rad3 = Radiobutton(window,text='Third', value=3, variable=selected)
def clicked():
print(selected.get())
btn = Button(window, text="Click Me", command=clicked)
rad1.grid(column=0, row=0)
rad2.grid(column=1, row=0)
rad3.grid(column=2, row=0)
btn.grid(column=3, row=0)
window.mainloop()
Comentarios
Publicar un comentario