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