martes, 30 de octubre de 2018

programa figuras:


from Tkinter import * #uso esta lib para la GUIfrom
from PIL import Image,ImageTk # la uso para desplegar la imagen
import os #para poder usar carpetas, dando la ruta
import random # uso para generar numeros aleatorios
import pygame #ayuda a reproducir sonido mp3,ogg
import time #sleep para dormir la compu unos seg..
import threading # libreria para manejar hilos


dir= os.path.dirname(__file__)
fotos= dir + "/imagenes/"
sonidos = dir + "/sonidos2/"


root=Tk() #para la ventana de app tkinter
root.geometry("500x500")

arreglo= [1]
eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))+ 1)
print eleccion_aleatoria
figura= fotos + eleccion_aleatoria + ".png"
print figura

#para reproducir sonido
sonido = sonidos + "s_(" + eleccion_aleatoria + ").mp3"
print sonido
pygame.mixer.init()
pygame.mixer.music.load(sonido)#abre el archivo
pygame.mixer.music.play()#repod sonido



img = Image.open(figura) #abriendo el archivo figura
tkimage= ImageTk.PhotoImage(img)

'crear un Label de tkinter para desplegar la imagen'
lab = Label(root,image=tkimage)
lab.pack()

pygame.init()
root.mainloop()






martes, 9 de octubre de 2018

jueves, 4 de octubre de 2018

Uso de Loop:



.model small
.stack 64

datos segment
    mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
    repetir db 13,10,"Repitiendo el ciclo $"
datos ends

codigo segment                              
    assume cs:codigo, ds:datos
inicio:
    
    mov ax, datos
    mov ds, ax
    
    mov ah, 09
    lea dx, mensaje
    int 21h

    mov ah, 01
    int 21h
    sub al, 30h    
    mov cl, al
    
    ciclo:
        mov ah, 09
        lea dx, repetir
        int 21h
    loop ciclo 

    mov ax,4c00h
    int 21h                                
codigo ends
end inicio

    

.model small
.stack 64

.data
mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
repetir db 13,10,"Repitiendo el ciclo $"

.code
inicio proc far
    
    mov ax, @data
    mov ds, ax
    
    mov ah, 09
    lea dx, mensaje
    int 21h

    mov ah, 01
    int 21h
    sub al, 30h
    
    mov cl, al
    
    ciclo:
        mov ah, 09
        lea dx, repetir
        int 21h
    loop ciclo 

    mov ax,4c00h
    int 21h
inicio endp
end

  

;Ejercicio loop con numeros:

org 100h

.data
    mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
    
    

.code    
inicio:
    mov ax,@data
    mov ds, ax
    mov dx,offset mensaje
    mov ah,09h
    int 21h

MOV DL, "0";se transfiere el caracter 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 26 interaciones
MOV AH, 02;se transifiere 02 al acumulador de byte alto
INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas

ret


 
;Ejercicio loop con numeros:

org 100h

.data
    mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
    
    

.code    
inicio:
    mov ax,@data
    mov ds, ax
    
    
    mov ah,09h
    mov dx,offset mensaje
    int 21h
    

MOV DL, "0";se transfiere el caracter 0 al registro de datos en el byte bajo

MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 10 interaciones
    MOV AH, 02;se transifiere 02 al acumulador de byte alto
    INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
    INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas

ret





.model small
.stack 64



.data

n1 db 0
n2 db 0
suma db 0
msg1 db "Dame el primer valor: ",'$'
msg2 db 10,13,"Dame el segundo valor: ",'$'
msg3 db 10,13,"suma= ",'$'

.code
begin proc far
    ;Direccionamiento al segmento de datos
    mov ax, @data
    mov  ds, ax
  
    ;Solicitamos el primer digito
    mov ah,09
    lea dx, msg1
    int 21h
    ;se  lee el primer valor
    mov ah, 01
    int 21h
    sub al, 30h ;Convvierte el caracter a  numero
    mov n1, al
  
    ;Solicitamos el segundo digito
    mov ah, 09
    lea dx, msg2
    int 21h
    mov ah, 01
    int 21h
    sub al, 30h ;convierte el caracter
    mov n2, al
  
    ;operacion de suma
    mov al, n1
    add al, n2
    add al, 30h
    mov suma, al
    mov ah, 09
    lea dx, msg3
    int 21h
  
    ;Se imprime el caracter con el servicio 02 de la int 21h
    mov ah, 02
    mov dl, suma
    int 21h
    mov ah, 4ch
    int 21h
    Begin endp
end



org 100h



.model small

.stack 64

.data



mensaje db 10,13 ,"Dame un numero",10,13,"$"

mensaje2 db 10,13 ,"Dame un la potencia",10,13,"$"

n1 db 0

n2 db 0

n3 db 0

.code



inicio:     ;función inicio



 mov ax,@data ;Movemos el segmento data a ax

 mov ds,ax ; Movemos lo que esta en ax a ds

 mov dx,offset mensaje ;Imprimimos el primer mensaje parte 1

 mov ah, 09h ;Imprimimos el primer mensaje parte 2

 int 21h ;Imprimimos el primer mensaje parte 3



 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h        ;interrupción para capturar

 sub al,30h   ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n1,al ;Movemos lo que esta en al a la variable n1

 mov n3,al  ;Movemos lo que esta en al a la variable n3



 mov ah, 09h ;imprimimos el mensaje 2 parte 1

 mov dx,offset mensaje2  ;imprimimos el mensaje 2 parte 2

 int 21h  ;imprimimos el mensaje 2 parte 3

 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h           ;interrupcion para capturar

 sub al,30h     ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n2,al     ;Guardamos lo que el usuario preciono el n2





 mov cl,al ; movemos lo que esta en al a cl para decirle al ciclo cuantas vueltas va a dar

 sub cl,1 ;le restamos 1 para que no de una vuelta de mas





call ciclo ;llamada a ciclo



ciclo:  ;Funcion

 call ciclo1 ;llamada el procediemto 1



ciclo1 proc near : ;procedimiento ciclo

  mov al,n1 ;potencia parte 1

  mov bh,n3 ;potencia parte 2

  mul bh ;potencia parte 3



  mov n1,al



  loop ciclo1 ;loop a la funcion ciclo

 



  mov ax,4c00h ;fin parte 1

  int 21h; fin parte 2



fin: ;funcion fin

 mov ax,4c00h      ;funcion que termina el programa

 int 21h

end inicio




Manual 1 De Lenguaje de Interfaz

Abrir enlace

Manual 2 de Lenguaje de Interfaz ver interrupciones

Abrir enlace

Poligonos en un Menu:


from Tkinter import *

def ocultar(ventana):ventana.destroy()

def ejecutar(f): v0.after(200, f)



def antilope():
        v1 = Toplevel(v0)
        v1.title("Ventana hija")
        v1.protocol("WM_DELETE_WINDOW", "onexit")
        v1.config(bg="black")
        v1.geometry("500x500")

        canvas = Canvas(v1, width=390, height=350, bg='black')
        canvas.pack(expand=YES, fill=BOTH)

        canvas.create_polygon(52.5, 14.5, 37, 59.1, 51, 59.1, fill="#5C554E", outline="#5C554E", width=1)
        canvas.create_polygon(19.3, 56.8, 58, 59.1, 67, 91, 37.5, 83, fill="#C3BAB5", outline="#C3BAB5", width=1)
        canvas.create_polygon(58, 57.8, 78, 77, 71, 103, fill="#D4CCC1", outline="#D4CCC1", width=1)
        canvas.create_polygon(37.5, 83, 67.4, 91, 71, 103, fill="#998C8A", outline="#998C8A", width=1)
        canvas.create_polygon(71, 103, 71, 104.8, 59.1, 104.8, 53.2, 91, fill="#665B57", outline="#665B57", width=1)

        canvas.create_polygon(86, 105.6, 98.2, 148.6, 47, 133.6, 24.2, 103.6, fill="#C3BAB5", outline="#C3BAB5",
                              width=1)
        canvas.create_polygon(98.2, 148.6, 102, 165.2, 47, 133.6, fill="#9B8D8A", outline="#9B8D8A", width=1)
        canvas.create_polygon(86, 105.6, 124, 169, 120, 196, 110.8, 196, fill="#D5CDC2", outline="#D5CDC2", width=1)
        canvas.create_polygon(102, 165.2, 110.8, 196, 99, 196, 80.6, 153, fill="#605550", outline="#605550", width=1)

        canvas.create_polygon(139.5, 197, 147, 241, 71, 220.4, 46, 193, fill="#C3BAB5", outline="#C3BAB5", width=1)
        canvas.create_polygon(147, 241, 150, 261.4, 71, 220.4, fill="#968B87", outline="#968B87", width=1)
        canvas.create_polygon(139.5, 197, 193, 274.2, 189, 307.8, 176, 321, 161.6, 321, fill="#D4CCC1",
                              outline="#D4CCC1", width=1)
        canvas.create_polygon(150, 261.4, 161.6, 321, 126.8, 249, fill="#605551", outline="#605551", width=1)

        canvas.create_polygon(199.4, 307.8, 189, 307.8, 176, 321, 186.6, 461, 184, 448.8, 171, 479.5, 199.4, 503,
                              fill="#C2AD9C", outline="#C2AD9C", width=1)
        canvas.create_polygon(176, 321, 161.6, 321, 186.6, 461, fill="#615652", outline="#615652", width=1)
        canvas.create_polygon(161.6, 321, 136, 359.4, 177.2, 409, fill="#D9C6B7", outline="#D9C6B7", width=1)
        canvas.create_polygon(144.4, 369.8, 139.6, 384.6, 160, 389.4, fill="#443232", outline="#443232", width=1)
        canvas.create_polygon(139.6, 384.6, 160, 389.4, 177.2, 409, 169.2, 450, fill="#826E65", outline="#826E65",
                              width=1)
        canvas.create_polygon(171, 479.5, 180.6, 497.8, 191.2, 496.8, fill="#463334", outline="#463334", width=1)
        canvas.create_polygon(177.2, 409, 164.8, 475, 176.5, 511, 199.4, 522, 199.4, 502.8, 191.2, 496.8, 180.6, 497.8,
                              171, 479.5, 184, 448.8, fill="#9B7F79", outline="#9B7F79", width=1)

        canvas.create_polygon(151.8, 335.4, 109.6, 280, 142.2, 349.2, fill="#5F5150", outline="#5F5150", width=1)
        canvas.create_polygon(109.6, 280, 70.3, 266, 94.3, 329, 131.3, 326, fill="#483636", outline="#483636", width=1)
        canvas.create_polygon(94.3, 329, 137, 336, 132, 326.8, fill="#C2AF9D", outline="#C2AF9D", width=1)
        canvas.create_polygon(115, 333, 136, 359.4, 142.2, 349.2, 137, 336, fill="#826E65", outline="#826E65", width=1)

        canvas.create_polygon(346.5, 14.5, 347.5, 59.1, 361, 59.1, fill="#2E2621", outline="#2E2621", width=1)
        canvas.create_polygon(379.4, 56.8, 341.8, 59.1, 332, 91, 361, 83, fill="#908782", outline="#908782", width=1)
        canvas.create_polygon(341.5, 57.8, 324, 75, 327.6, 103, fill="#A29B8F", outline="#A29B8F", width=1)
        canvas.create_polygon(361, 83, 332.4, 91, 329, 103, fill="#685D59", outline="#685D59", width=1)
        canvas.create_polygon(329, 103, 326.8, 104.8, 340, 104.8, 345.6, 91, fill="#2D2220", outline="#2D2220", width=1)

        canvas.create_polygon(313, 105.6, 301, 148.6, 352, 133.6, 374.5, 103.6, fill="#908782", outline="#908782",
                              width=1)
        canvas.create_polygon(301, 148.6, 297, 165.2, 352, 133.6, fill="#625755", outline="#625755", width=1)
        canvas.create_polygon(313, 105.6, 274, 169, 279, 196, 288, 196, fill="#A1998E", outline="#A1998E", width=1)
        canvas.create_polygon(297, 165.2, 288, 196, 300, 196, 318, 153, fill="#2D221E", outline="#2D221E", width=1)

        canvas.create_polygon(260, 197, 252, 241, 331, 220.4, 352.4, 193, fill="#908782", outline="#908782", width=1)
        canvas.create_polygon(252, 241, 249, 261.4, 331, 220.4, fill="#645955", outline="#645955", width=1)
        canvas.create_polygon(260, 197, 205, 274.2, 209.8, 307.8, 223, 321, 238, 321, fill="#A1998E", outline="#A1998E",
                              width=1)
        canvas.create_polygon(249, 261.4, 238.6, 321, 271.8, 249, fill="#2D221E", outline="#2D221E", width=1)

        canvas.create_polygon(199.4, 307.8, 209.8, 307.8, 223, 321, 212.6, 461, 215, 448.8, 228, 479.5, 199.4, 503,
                              fill="#8E7968", outline="#8E7968", width=1)
        canvas.create_polygon(223, 321, 238.6, 321, 212.6, 461, fill="#302722", outline="#302722", width=1)
        canvas.create_polygon(238, 321, 262.8, 359.4, 222.5, 409, fill="#A69384", outline="#A69384", width=1)
        canvas.create_polygon(254.4, 369.8, 259.6, 384.6, 238, 389.4, fill="#120001", outline="#120001", width=1)
        canvas.create_polygon(259.6, 384.6, 238, 389.4, 222.5, 409, 229.5, 450, fill="#4F3B32", outline="#4F3B32",
                              width=1)
        canvas.create_polygon(228, 479.5, 218.3, 497.8, 207.5, 496.8, fill="#180A04", outline="#180A04", width=1)
        canvas.create_polygon(222.5, 409, 234, 475, 223, 511, 199.4, 522, 199.4, 502.8, 207.5, 496.8, 218.3, 497.8, 228,
                              479.5, 215, 448.8, fill="#674C45", outline="#674C45", width=1)

        canvas.create_polygon(247, 335.4, 290.6, 280, 256.8, 349.2, fill="#281F1D", outline="#281F1D", width=1)
        canvas.create_polygon(290.6, 280, 328, 266, 304.8, 329, 267.5, 326, fill="#140202", outline="#140202", width=1)
        canvas.create_polygon(304.8, 329, 262.5, 336, 267.5, 326.8, fill="#8D7B66", outline="#8D7B66", width=1)
        canvas.create_polygon(283, 333, 262.8, 359.4, 256.8, 349.2, 262.5, 336, fill="#4D3930", outline="#4D3930",
                              width=1)
        b3 = Button(canvas, text="ocultar poligono de David Mendoza Martinez", command=lambda: ejecutar(ocultar(v1)))
        b3.grid(row=1, column=3)
        v1.deiconify()


def gato():
        v1 = Toplevel(v0)
        v1.title("Ventana hija")
        v1.protocol("WM_DELETE_WINDOW", "onexit")
        v1.config(bg="black")
        v1.geometry("500x500")
        canvas = Canvas(v1, width=300, height=200, bg='white')
        canvas.pack(expand=YES, fill=BOTH)
        canvas.create_polygon(420, 180,
                              420, 60,
                              380, 100,
                              300, 100,
                              260, 60,
                              260, 140,
                              220, 100,
                              180, 100,
                              140, 140,
                              140, 80,
                              150, 80,
                              200, 40,
                              200, 20,
                              160, 20,
                              90, 80,
                              100, 160,
                              120, 270,
                              200, 270,
                              200, 230,
                              160, 230,
                              160, 210,
                              180, 190,
                              220, 190,
                              220, 270,
                              280, 270,
                              280, 230,
                              260, 230,
                              260, 180,
                              400, 200,
                              360, 220,
                              320, 220,
                              280, 180,
                              fill="lightblue", outline="brown", width=6)
        b3 = Button(canvas, text="ocultar Gato de Eduardo Aquino Sanchez", command=lambda: ejecutar(ocultar(v1)))
        b3.grid(row=1, column=3)
        v1.deiconify()



def flores():
    v1 = Toplevel(v0)
    v1.title("Ventana hija")
    v1.protocol("WM_DELETE_WINDOW", "onexit")
    v1.config(bg="black")
    v1.geometry("500x500")

    figuras = Canvas(v1, width=500, bg='white')
    figuras.pack(expand=YES, fill=BOTH)
    puntos = [35, 75, 35, 85, 45, 95, 75, 95, 85, 85, 85, 75]
    figuras.create_polygon(puntos, fill='brown', outline="black", width=3)
    puntos2 = [50, 75, 50, 40, 60, 30, 60, 40, 70, 40, 70, 30, 80, 30, 80, 20, 70, 20, 70, 10, 60, 10, 60, 20, 50, 20,
               50, 30, 60, 30, 50, 40]
    b6 = Button(figuras, text="Cerrar figura de flores de Michelle Morales", command=lambda: v1.destroy())

    figuras.create_polygon(puntos2, fill='white', outline="black", width=2)
    puntos3 = [60, 30, 70, 30, 70, 20, 60, 20]
    figuras.create_polygon(puntos3, fill='yellow', outline="black", width=2)
    puntos4 = [50, 54.5, 55, 53, 57, 53, 70, 54.5, 57, 59, 50, 54.5]
    figuras.create_polygon(puntos4, fill='green', outline="black", width=2)

    puntos5 = [235, 275, 235, 285, 245, 295, 275, 295, 285, 285, 285, 275]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [250, 275, 250, 240, 260, 230, 260, 240, 270, 240, 270, 230, 280, 230, 280, 220, 270, 220, 270, 210, 260,
               210, 260, 220, 250, 220, 250, 230, 260, 230, 250, 240]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [260, 230, 270, 230, 270, 220, 260, 220]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [250, 254.5, 255, 253, 257, 253, 270, 254.5, 257, 259, 250, 254.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [135, 175, 135, 185, 145, 195, 175, 195, 185, 185, 185, 175]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [150, 175, 150, 140, 160, 130, 160, 140, 170, 140, 170, 130, 180, 130, 180, 120, 170, 120, 170, 110, 160,
               110, 160, 120, 150, 120, 150, 130, 160, 130, 150, 140]

    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [160, 130, 170, 130, 170, 120, 160, 120]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [150, 154.5, 155, 153, 157, 153, 170, 154.5, 157, 159, 150, 154.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [35, 175, 35, 185, 45, 195, 75, 195, 85, 185, 85, 175]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [50, 175, 50, 140, 60, 130, 60, 140, 70, 140, 70, 130, 80, 130, 80, 120, 70, 120, 70, 110, 60, 110, 60,
               120, 50, 120, 50, 130, 60, 130, 50, 140]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [60, 130, 70, 130, 70, 120, 60, 120]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [50, 154.5, 55, 153, 57, 153, 70, 154.5, 57, 159, 50, 154.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [35, 375, 35, 385, 45, 395, 75, 395, 85, 385, 85, 375]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [50, 375, 50, 340, 60, 330, 60, 340, 70, 340, 70, 330, 80, 330, 80, 320, 70, 320, 70, 310, 60, 310, 60,
               320, 50, 320, 50, 330, 60, 330, 50, 340]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [60, 330, 70, 330, 70, 320, 60, 320]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [50, 354.5, 55, 353, 57, 353, 70, 354.5, 57, 359, 50, 354.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [35, 275, 35, 285, 45, 295, 75, 295, 85, 285, 85, 275]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [50, 275, 50, 240, 60, 230, 60, 240, 70, 240, 70, 230, 80, 230, 80, 220, 70, 220, 70, 210, 60, 210, 60,
               220, 50, 220, 50, 230, 60, 230, 50, 240]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [60, 230, 70, 230, 70, 220, 60, 220]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [50, 254.5, 55, 253, 57, 253, 70, 254.5, 57, 259, 50, 254.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [135, 275, 135, 285, 145, 295, 175, 295, 185, 285, 185, 275]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [150, 275, 150, 240, 160, 230, 160, 240, 170, 240, 170, 230, 180, 230, 180, 220, 170, 220, 170, 210, 160,
               210, 160, 220, 150, 220, 150, 230, 160, 230, 150, 240]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [160, 230, 170, 230, 170, 220, 160, 220]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [150, 254.5, 155, 253, 157, 253, 170, 254.5, 157, 259, 150, 254.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    puntos5 = [235, 175, 235, 185, 245, 195, 275, 195, 285, 185, 285, 175]
    figuras.create_polygon(puntos5, fill='brown', outline="black", width=3)
    puntos6 = [250, 175, 250, 140, 260, 130, 260, 140, 270, 140, 270, 130, 280, 130, 280, 120, 270, 120, 270, 110, 260,
               110, 260, 120, 250, 120, 250, 130, 260, 130, 250, 140]
    figuras.create_polygon(puntos6, fill='white', outline="black", width=2)
    puntos7 = [260, 130, 270, 130, 270, 120, 260, 120]
    figuras.create_polygon(puntos7, fill='yellow', outline="black", width=2)
    puntos8 = [250, 154.5, 255, 153, 257, 153, 270, 154.5, 257, 159, 250, 154.5]
    figuras.create_polygon(puntos8, fill='green', outline="black", width=2)

    b6.pack()
    v1.deiconify()


v0=Tk()
menu1 = Menu(v0)
v0.config(menu=menu1)
menu1_1 = Menu(menu1, tearoff=0)
menu1.add_cascade(label="Poligonos", menu=menu1_1)
menu1_1_1 = Menu(menu1_1, tearoff=0)
menu1_1.add_cascade(label="Animales", menu=menu1_1_1)
menu1_1_1.add_command(label="Antilope",command=lambda: antilope())
menu1_1_1.add_command(label="Gato",command=lambda: gato())




menu1_2 = Menu(menu1, tearoff=0)
menu1.add_cascade(label="Varios", menu=menu1_2)
menu1_2.add_command(label="Flores",command=lambda: flores())
menu1_2.add_separator()
menu1_2_1 = Menu(menu1_2, tearoff=0)
menu1_2.add_cascade(label="Frutas", menu=menu1_2_1)
menu1_2_1.add_command(label="FRESA",command=lambda: imprimir("FRESA"))
menu1_2_1.add_command(label="MANZANA",command=lambda: imprimir("MANZANA"))

v0.mainloop()