#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana principal") # Título de la ventana
ventanaPrincipal.config(bg="orange") # Le da color al fondo
ventanaPrincipal.geometry("860x400") # Cambia el tamaño de la ventana
def ventanaH():
ventanaHija = Toplevel(ventanaPrincipal)
ventanaHija.title("Ventana hija")
ventanaHija.protocol("WM_DELETE_WINDOW", "onexit")
return ventanaHija
def ejecutar(f):
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
def circulo():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='red') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_oval(10, 10, 200, 200, width=3, fill='blue') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def rectangulo():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_rectangle(10, 10, 200, 200, width=5, fill='yellow') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def lineas():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_line(0, 200, 200, 0, width=10, fill='purple') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def quesito():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=300, height=200, bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=270, extent=90, fill='pink') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def arco():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width =300, height=200, bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=0, extent=270, fill='yellow') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def pastel():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=300, height=300, bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=0, extent=270, fill='orange') # Coordenadas y características de la figura
figura.create_arc(20, 20, 200, 200, width=3, start=270, extent=90, fill='brown')
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def texto():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=400, height=300, bg='yellow') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_text(160,100,fill="purple",font="Times 30 italic bold",text="Texto\n hecho en python.")
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def poligono():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=400, height=300,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_polygon(40, 40, 40, 140, 140, 140, 140, 100,fill="orange", outline="brown", width=6)
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def letras():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=400, height=300, bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
puntosFigura1 = [40, 40, 40, 200, 60, 200, 60, 80, 100, 160, 140, 80, 140, 200, 160, 200, 160, 40, 140, 40, 100, 120, 60, 40]
figura.create_polygon(puntosFigura1, fill="#006600", outline="black", width=6)
puntosFigura2=[40, 40, 60, 40, 80, 100, 100, 40, 120, 40, 90, 120, 120, 200, 100, 200, 80, 140, 60, 200, 40, 200, 70, 120]
for i in range(0,len(puntosFigura2)):
if(i%2==0):
puntosFigura2[i] +=140
figura.create_polygon(puntosFigura2, fill="red", outline="black", width=6)
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
botonCirculo = Button(ventanaPrincipal, text="Mostrar circulo", command=lambda: ejecutar (circulo())) # Primer boton
botonCirculo.grid (row=1, column=1) # El botón es cargado
botonRectangulo = Button(ventanaPrincipal, text="Mostrar rectangulo", command=lambda: ejecutar (rectangulo())) # Primer boton
botonRectangulo.grid (row=1, column=2) # El botón es cargado
botonLineas = Button(ventanaPrincipal, text="Mostrar linea", command=lambda: ejecutar (lineas())) # Primer boton
botonLineas.grid (row=1, column=3) # El botón es cargado
botonQuesito = Button(ventanaPrincipal, text="Mostrar quesito", command=lambda: ejecutar (quesito())) # Primer boton
botonQuesito.grid (row=1, column=4) # El botón es cargado
botonArco = Button(ventanaPrincipal, text="Mostrar arco", command=lambda: ejecutar (arco())) # Primer boton
botonArco.grid (row=1, column=5) # El botón es cargado
botonPastel = Button(ventanaPrincipal, text="Mostrar pastel", command=lambda: ejecutar (pastel())) # Primer boton
botonPastel.grid (row=1, column=6) # El botón es cargado
botonTexto = Button(ventanaPrincipal, text="Mostrar texto", command=lambda: ejecutar (texto())) # Primer boton
botonTexto.grid (row=1, column=7) # El botón es cargado
botonPoligono = Button(ventanaPrincipal, text="Mostrar poligono", command=lambda: ejecutar (poligono())) # Primer boton
botonPoligono.grid (row=1, column=8) # El botón es cargado
botonPoligono = Button(ventanaPrincipal, text="Mostrar letras", command=lambda: ejecutar (letras())) # Primer boton
botonPoligono.grid (row=1, column=9) # El botón es cargado
ventanaPrincipal.mainloop()
jueves, 21 de septiembre de 2017
Nuevas figuras librería Tkinter (texto, poligono, letras)
viernes, 15 de septiembre de 2017
Nuevas figuras Tkinter en ventana hija (quesito, arco y pastel)
#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana principal") # Título de la ventana
ventanaPrincipal.config(bg="orange") # Le da color al fondo
ventanaPrincipal.geometry("600x400") # Cambia el tamaño de la ventana
def ventanaH():
ventanaHija = Toplevel(ventanaPrincipal)
ventanaHija.title("Ventana hija")
ventanaHija.protocol("WM_DELETE_WINDOW", "onexit")
return ventanaHija
def ejecutar(f):
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
def circulo():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='red') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_oval(10, 10, 200, 200, width=3, fill='blue') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def rectangulo():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_rectangle(10, 10, 200, 200, width=5, fill='yellow') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def lineas():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=210, height=210,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_line(0, 200, 200, 0, width=10, fill='purple') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def quesito():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=300, height=200, bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=270, extent=90, fill='pink') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def arco():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width =300, height=200, bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=0, extent=270, fill='yellow') # Coordenadas y características de la figura
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
def pastel():
ventana = ventanaH()
ventana.deiconify()
figura = Canvas(ventana)
figura.config(width=300, height=300, bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_arc(10, 10, 190, 190, width=3, start=0, extent=270, fill='orange') # Coordenadas y características de la figura
figura.create_arc(20, 20, 200, 200, width=3, start=270, extent=90, fill='brown')
botonVentanaHija = Button(ventana, text="Cerrar", command=lambda: ejecutar(ventana.destroy()))
botonVentanaHija.pack()
botonCirculo = Button(ventanaPrincipal, text="Mostrar circulo", command=lambda: ejecutar (circulo())) # Primer boton
botonCirculo.grid (row=1, column=1) # El botón es cargado
botonRectangulo = Button(ventanaPrincipal, text="Mostrar rectangulo", command=lambda: ejecutar (rectangulo())) # Primer boton
botonRectangulo.grid (row=1, column=2) # El botón es cargado
botonLineas = Button(ventanaPrincipal, text="Mostrar linea", command=lambda: ejecutar (lineas())) # Primer boton
botonLineas.grid (row=1, column=3) # El botón es cargado
botonQuesito = Button(ventanaPrincipal, text="Mostrar quesito", command=lambda: ejecutar (quesito())) # Primer boton
botonQuesito.grid (row=1, column=4) # El botón es cargado
botonArco = Button(ventanaPrincipal, text="Mostrar arco", command=lambda: ejecutar (arco())) # Primer boton
botonArco.grid (row=1, column=5) # El botón es cargado
botonPastel = Button(ventanaPrincipal, text="Mostrar pastel", command=lambda: ejecutar (pastel())) # Primer boton
botonPastel.grid (row=1, column=6) # El botón es cargado
ventanaPrincipal.mainloop()
jueves, 14 de septiembre de 2017
Juego del Gato con librería Tkinter
#-*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox # Libreria para crear ventanas de diálogo
import tkSimpleDialog # Libreria para crear ventanas de diálogo
# Variables globales.
ventanaPrincipal = Tk()
nombreJugador1 = "" # Variable que contendrá el nombre de un jugador.
nombreJugador2 = "" # Variable que contendrá el nombre de un jugador.
listaBotones = [] # Lista/arreglo que almacenará cada uno de los botones del tablero de juego.
casillas = [] # Lista/arreglo que almacenará la elección de cada jugador.
etiquetaTurnoJugador = StringVar() # Declara una variable Tkinter(), de tipo cadena para mostrar el nombre del jugador.
numeroJugador = 0 # Variable para cambiar entre jugador según el turno correspondiente.
# Función para configurar el diseño de la ventana principal y sus elementos.
def tablero():
# Configuración de la ventana.
ventanaPrincipal.title("Juego del gato") # Título de la ventana
ventanaPrincipal.geometry("370x460") # Medidas de la ventana
# Etiqueta en la que se muestra el nombre del jugador según sea su turno proporcionado por la variable turnoJugador
etiquetaTurno = Label(ventanaPrincipal, textvariable=etiquetaTurnoJugador, font='bold 16')
etiquetaTurno.place(x=130, y=10) # Coordenadas de posición en la ventana.
# Botón de inicio del juego que ejecuta a la función iniciarJuego()
botonIniciar = Button(ventanaPrincipal, bg='blue', fg='white', text='Iniciar juego', cursor="sizing", width=15, height=3, command=lambda: iniciarJuego())
botonIniciar.place(x=130, y=380) # Coordenadas de posición en la ventana.
# Lineas que dividen el tablero.
linea1 = Canvas(ventanaPrincipal, width=310, height=10)
linea1.place(x=30, y=140) # Coordenadas de posición en la ventana.
linea1.create_line(310, 0, 0, 0, width=25, fill='black')
linea2 = Canvas(ventanaPrincipal, width=310, height=10)
linea2.place(x=30, y=240) # Coordenadas de posición en la ventana.
linea2.create_line(310, 0, 0, 0, width=25, fill='black')
linea3 = Canvas(ventanaPrincipal, width=10, height=310)
linea3.place(x=130, y=45) # Coordenadas de posición en la ventana.
linea3.create_line(0, 310, 0, 0, width=25, fill='black')
linea4 = Canvas(ventanaPrincipal, width=10, height=310)
linea4.place(x=230, y=45) # Coordenadas de posición en la ventana.
linea4.create_line(0, 310, 0, 0, width=25, fill='black')
# Botones del tablero de juego que ejecutan la función selección() enviando un número que hace referencia a su posición.
boton0 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(0))
listaBotones.append(boton0) # El botón se almacena en la lista de botones.
boton0.place(x=50, y=70) # Coordenadas de posición en la ventana.
boton1 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(1))
listaBotones.append(boton1) # El botón se almacena en la lista de botones.
boton1.place(x=150, y=70) # Coordenadas de posición en la ventana.
boton2 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(2))
listaBotones.append(boton2) # El botón se almacena en la lista de botones.
boton2.place(x=250, y=70) # Coordenadas de posición en la ventana.
boton3 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(3))
listaBotones.append(boton3) # El botón se almacena en la lista de botones.
boton3.place(x=50, y=170) # Coordenadas de posición en la ventana.
boton4 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(4))
listaBotones.append(boton4) # El botón se almacena en la lista de botones.
boton4.place(x=150, y=170) # Coordenadas de posición en la ventana.
boton5 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(5))
listaBotones.append(boton5) # El botón se almacena en la lista de botones.
boton5.place(x=250, y=170) # Coordenadas de posición en la ventana.
boton6 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(6))
listaBotones.append(boton6) # El botón se almacena en la lista de botones.
boton6.place(x=50, y=270) # Coordenadas de posición en la ventana.
boton7 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(7))
listaBotones.append(boton7) # El botón se almacena en la lista de botones.
boton7.place(x=150, y=270) # Coordenadas de posición en la ventana.
boton8 = Button(ventanaPrincipal, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: selecion(8))
listaBotones.append(boton8) # El botón se almacena en la lista de botones.
boton8.place(x=250, y=270) # Coordenadas de posición en la ventana.
# Se llena la lista -> casillas = [] con la letra "N" para que la lista tenga un tamaño de 9 elementos.
for i in range(0, 9): # Ciclo en el que se le asignan valores a la variable "i" en un rango de 0 a 8.
casillas.append("N") # Se almacena la letra N en la posición i de la lista/arreglo.
# Función para bloquear todos los botones del tablero según sea necesario.
def bloquearInicio():
for i in range(0, 9): # Ciclo en el que se le asignan valores a la variable "i" en un rango de 0 a 8.
listaBotones[i].config(state="disable") # Se inhabilita el botón en la posición i de la lista/arreglo.
# Función para iniciar la ejecución del juego.
def iniciarJuego():
for i in range(0, 9): # Ciclo en el que se le asignan valores a la variable "i" en un rango de 0 a 8.
listaBotones[i].config(state="normal") # Se habilita el botón en la posición i de la lista/arreglo.
listaBotones[i].config(bg="lightgray") # Se le asigna un nuevo fondo al botón.
listaBotones[i].config(text="") # Se le asigna una cadena de texto vacía al botón para limpiar cualquier texto anterior.
casillas[i] = "N" # Para no tener que reiniciar la ventana al volver a precionar el botón Iniciar juego.
print casillas
global nombreJugador1, nombreJugador2 # Se llama a las variables globales a las que vamos a acceder.
# Lanza una ventana de diálogo en la que se puede ingresar una cadena de texto, la cual se va almacenar en la variable.
# Se le envía como parametro el título de la ventana y un mensaje para mostrar.
nombreJugador1 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 1: ")
nombreJugador2 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 2: ")
# Comprobamos que no se hayan ingresado datos sin tipo a las variables de los nombres o cadenas vacías
# Si se cumple la condición anterior se concatena el contenido de nombreJugador1 a la etiqueta que muestra los turnos.
if ((nombreJugador1 and nombreJugador2) is not None) and ((nombreJugador1 and nombreJugador2)!=""):
etiquetaTurnoJugador.set("Turno: " + nombreJugador1)
else:
#Si no se cumple la condición aparece una ventana informando el error, y se bloquea el inicio del juego.
tkMessageBox.showwarning("Error", "Favor de llenar correctamente los nombres de usuario.")
bloquearInicio()
# Función que slecciona y marca el botón (casilla) deacuerdo al turno y al jugador, recibiendo como parámetro el número del botón.
def selecion(numero):
global numeroJugador, nombreJugador1, nombreJugador2 # Se llama a las variables globales a las que vamos a acceder
if numeroJugador == 0: # Se verifica que la casilla contenga N y que sea el turno del jugador 0.
listaBotones[numero].config(text="X") # Coloca X en el botón.
listaBotones[numero].config(bg="white") # Cambia el fondo del botón.
casillas[numero] = "X" # Se almacena X en la lista casillas = []
numeroJugador = 1 # Cambia el turno del jugador.
etiquetaTurnoJugador.set("Turno: " + nombreJugador2)# La etiqueta cambia y muestra el nombre del otro jugador.
print casillas
elif casillas[numero] == "N" and numeroJugador == 1: # Se verifica que la casilla contenga N y que sea el turno del jugador 1.
listaBotones[numero].config(text="O") # Coloca O en el botón.
listaBotones[numero].config(bg="lightblue") # Cambia el fondo del botón.
casillas[numero] = "O" # Se almacena O en la lista casillas = []
numeroJugador = 0 # Cambia el turno del jugador.
etiquetaTurnoJugador.set("Turno: " + nombreJugador1)# La etiqueta cambia y muestra el nombre del otro jugador.
print casillas
listaBotones[numero].config(state="disable") # El botón seleccionado de acuerdo a su número (parámetro enviado) se desactiva.
verificarVictoria() # Se llama a la función verificarVictoria() al finalizar la selección en cada turno.
# Función que ejecuta las condiciones de victoria.
def verificarVictoria():
# Verificación de victoria horizontal para el numeroJugador = 0 (1).
if (casillas[0] == "X" and casillas[1] == "X" and casillas[2] == "X") or (
casillas[3] == "X" and casillas[4] == "X" and casillas[5] == "X") or (
casillas[6] == "X" and casillas[7] == "X" and casillas[8] == "X"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador1.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador1)
# Verificación de victoria vertical para el numeroJugador = 0 (1).
elif (casillas[0] == "X" and casillas[3] == "X" and casillas[6] == "X") or (
casillas[1] == "X" and casillas[4] == "X" and casillas[7] == "X") or (
casillas[2] == "X" and casillas[5] == "X" and casillas[8] == "X"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador1.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador1)
# Verificación de victoria diagonal para el numeroJugador = 0 (1).
elif (casillas[0] == "X" and casillas[4] == "X" and casillas[8] == "X") or (
casillas[2] == "X" and casillas[4] == "X" and casillas[6] == "X"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador1.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador1)
# Verificación de victoria horizontal para el numeroJugador = 1 (2).
elif (casillas[0] == "O" and casillas[1] == "O" and casillas[2] == "O") or (
casillas[3] == "O" and casillas[4] == "O" and casillas[5] == "O") or (
casillas[6] == "O" and casillas[7] == "O" and casillas[8] == "O"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador2.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador2)
# Verificación de victoria vertical para el numeroJugador = 1 (2).
elif (casillas[0] == "O" and casillas[3] == "O" and casillas[6] == "O") or (
casillas[1] == "O" and casillas[4] == "O" and casillas[7] == "O") or (
casillas[2] == "O" and casillas[5] == "O" and casillas[8] == "O"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador2.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador2)
# Verificación de victoria diagonal para el numeroJugador = 1 (2).
elif (casillas[0] == "O" and casillas[4] == "O" and casillas[8] == "O") or (
casillas[2] == "O" and casillas[4] == "O" and casillas[6] == "O"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de victoria con nombreJugador2.
tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nombreJugador2)
# Si todas las condiciones anteriores no se cumplen y todas las casillas han sido seleccionadas
# muestra una ventana de diálogo indicando el empate.
elif (casillas[0] != "N" and casillas[1] != "N" and casillas[2] != "N" and
casillas[3] != "N" and casillas[4] != "N" and casillas[5] != "N" and
casillas[6] != "N" and casillas[7] != "N" and casillas[8] != "N"):
bloquearInicio() # Bloquemos las botones.
# Mostramos ventana de empate con los nombres de los jugadores.
tkMessageBox.showinfo("Empate", "Los jugadores: " + nombreJugador1 + " y " + nombreJugador2 + " han empatado.")
tablero() # Se ejecuta la función tablero para crear todos los elementos de la ventana de juego.
bloquearInicio() # Bloqueamos los botones.
ventanaPrincipal.mainloop() # Se ejecuta la ventana principal.
lunes, 11 de septiembre de 2017
Práctica con funciones y figuras Tkinter en ventana hija
1. Círculo, rectángulo y línea en vantana hija. (Forma 1: Funciones)
2. Círculo, rectángulo y línea en vantana hija. (Forma 2: Clases y funciones)
#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana principal") # Título de la ventana
ventanaPrincipal.config(bg="orange") # Le da color al fondo
ventanaPrincipal.geometry("500x400") # Cambia el tamaño de la ventana
ventanaHija = Toplevel(ventanaPrincipal)
ventanaHija.title("Ventana hija")
ventanaHija.protocol("WM_DELETE_WINDOW", "onexit")
figura = Canvas(ventanaHija)
def ejecutar(f):
lista = figura.find_all()
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
try:
figura.delete(figura.find_below(lista[1]))
except:
print (figura.find_all())
def circulo(ventana):
ventanaHija.deiconify()
figura.config(width=210, height=210,bg='red') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_oval(10, 10, 200, 200, width=3, fill='blue') # Coordenadas y características de la figura
def rectangulo(ventana):
ventanaHija.deiconify()
figura.config(width=210, height=210,bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_rectangle(10, 10, 200, 200, width=5, fill='yellow') # Coordenadas y características de la figura
def lineas(ventana):
ventanaHija.deiconify()
figura.config(width=210, height=210,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_line(0, 200, 200, 0, width=10, fill='purple') # Coordenadas y características de la figura
def ocultar(ventana):
ventanaHija.withdraw()
botonCirculo = Button(ventanaPrincipal, text="Mostrar circulo", command=lambda: ejecutar (circulo(ventanaHija))) # Primer boton
botonCirculo.grid (row=1, column=1) # El botón es cargado
botonRectangulo = Button(ventanaPrincipal, text="Mostrar rectangulo", command=lambda: ejecutar (rectangulo(ventanaHija))) # Primer boton
botonRectangulo.grid (row=1, column=2) # El botón es cargado
botonLineas = Button(ventanaPrincipal, text="Mostrar linea", command=lambda: ejecutar (lineas(ventanaHija))) # Primer boton
botonLineas.grid (row=1, column=3) # El botón es cargado
botonVentanaHija= Button(ventanaHija, text="Cerrar", command=lambda: ejecutar(ocultar(ventanaHija)))
botonVentanaHija.pack()
ventanaHija.withdraw()
ventanaPrincipal.mainloop()
#-*- coding: utf-8 -*-
from Tkinter import *
v = Tk() # Tk() Es la ventana principal
v.title("Ventana Principal")
v.geometry("500x500")
v.config(bg="brown")
class main(Frame):
def __init__(self, master=None):
Frame.__init__(self,master)
self.pack()
ventanaHija = Toplevel(self)
ventanaHija.title("Ventana hija")
ventanaHija.protocol("WM_DELETE_WINDOW", "onexit")
ventanaHija.withdraw()
botonVentanaHija = Button(ventanaHija, text="Cerrar", command=lambda: self.ocultar(ventanaHija))
botonVentanaHija.pack()
figura = Canvas(ventanaHija)
botonCirculo = Button(self, text="Mostrar circulo",command=lambda:self.ejecutar(self.circulo(ventanaHija,figura),ventanaHija,figura)) # Primer boton
botonCirculo.grid(row=1, column=1) # El botón es cargado
botonRectangulo = Button(self, text="Mostrar rectangulo",command=lambda:self.ejecutar(self.rectangulo(ventanaHija,figura),ventanaHija,figura)) # Primer boton
botonRectangulo.grid(row=1, column=2) # El botón es cargado
botonLineas = Button(self, text="Mostrar linea",command=lambda:self.ejecutar(self.lineas(ventanaHija,figura),ventanaHija,figura)) # Primer boton
botonLineas.grid(row=1, column=3) # El botón es cargado
def ejecutar(self,f,ventana,figura):
lista = figura.find_all()
ventana.after(200, f) # Una forma de ejecutar las funciones
try:
figura.delete(figura.find_below(lista[1]))
except:
print (figura.find_all())
def circulo(self,ventana,figura):
ventana.deiconify()
figura.config(width=210, height=210,bg='red') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_oval(10, 10, 200, 200, width=3, fill='blue') # Coordenadas y características de la figura
def rectangulo(self,ventana,figura):
ventana.deiconify()
figura.config(width=210, height=210,bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_rectangle(10, 10, 200, 200, width=5, fill='yellow') # Coordenadas y características de la figura
def lineas(self,ventana,figura):
ventana.deiconify()
figura.config(width=210, height=210,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
figura.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
figura.create_line(0, 200, 200, 0, width=10, fill='purple') # Coordenadas y características de la figura
def ocultar(self,ventana):
ventana.withdraw()
objeto = main(master=v)
objeto.mainloop()
domingo, 10 de septiembre de 2017
Práctica con funciones y figuras Tkinter
1. Círculo en ventana principal.
2. Rectángulo en ventana principal.
3. Línea en ventana principal.
#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana de figura con botón") # Título de la ventana
ventanaPrincipal.config(bg="orange") # Le da color al fondo
ventanaPrincipal.geometry("500x500") # Cambia el tamaño de la ventana
def ejecutar(f):
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
def circulo(ventana):
circulo = Canvas(width=210, height=210,bg='red') # Lienzo con las medidas y color sobre el que se dibujará la figura
circulo.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
circulo.create_oval(10, 10, 200, 200, width=3, fill='blue') # Coordenadas y características de la figura
botonCirculo = Button(ventanaPrincipal, text="Mostrar circulo", command=lambda: ejecutar (circulo(ventanaPrincipal))) # Primer botón
botonCirculo.grid (row=1, column=1) # El botón es cargado
ventanaPrincipal.mainloop()
2. Rectángulo en ventana principal.
#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana de figura con botón") # Título de la ventana
ventanaPrincipal.config(bg="brown") # Le da color al fondo
ventanaPrincipal.geometry("500x500") # Cambia el tamaño de la ventana
def ejecutar(f):
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
def rectangulo(ventana):
rectangulo = Canvas(width=210, height=210,bg='white') # Lienzo con las medidas y color sobre el que se dibujará la figura
rectangulo.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
rectangulo.create_rectangle(10, 10, 200, 200, width=5, fill='yellow') # Coordenadas y características de la figura
botonRectangulo = Button(ventanaPrincipal, text="Mostrar cuadro", command=lambda: ejecutar (rectangulo(ventanaPrincipal))) # Primer boton
botonRectangulo.grid (row=1, column=1) # El botón es cargado
ventanaPrincipal.mainloop()
3. Línea en ventana principal.
#-*- coding: utf-8 -*-
from Tkinter import *
ventanaPrincipal = Tk() # Tk() Es la ventana principal
ventanaPrincipal.title("Ventana de figura con botón") # Título de la ventana
ventanaPrincipal.config(bg="pink") # Le da color al fondo
ventanaPrincipal.geometry("500x500") # Cambia el tamaño de la ventana
def ejecutar(f):
ventanaPrincipal.after(200, f) # Una forma de ejecutar las funciones
def lineas(ventana):
lineas = Canvas(width=210, height=210,bg='gray') # Lienzo con las medidas y color sobre el que se dibujará la figura
lineas.pack(expand=YES, fill=BOTH) # Sirve para cargar la figura
lineas.create_line(0, 200, 200, 0, width=10, fill='purple') # Coordenadas y características de la figura
botonLinea = Button(ventanaPrincipal, text="Mostrar linea", command=lambda: ejecutar (lineas(ventanaPrincipal))) # Primer botón
botonLinea.grid (row=1, column=1) # El botón es cargado
ventanaPrincipal.mainloop()
miércoles, 6 de septiembre de 2017
Video 12 - Curso de Python: Funciones
Ejemplo 1: Programa en el que se declara una función para sumar dos cantidades numéricas.
Ejemplo 2: Programa en el que se declara una función para sumar dos cantidades numéricas, que se inicializan en los parámetros de la función. Y se manda llamar a dicha función enviándole un solo parámetro.
Ejemplo 3: Programa en el que se declara una función para sumar dos cantidades numéricas, que se inicializan en los parámetros de la función. Y se manda llamar a dicha función enviándole los dos parámetros.
Ejemplo 4: Programa en el que se declara una función para imprimir una cadena de texto las veces que se indiquen. Y se manda llamar a dicha función enviándole la cadena de texto.
Ejemplo 5: Programa en el que se declara una función para imprimir una cadena de texto las veces que se indiquen. Y se manda llamar a dicha función enviándole la cadena de texto y el número de veces a imprimir.
Ejemplo 6: Programa en el que se declara una función para imprimir una cadena de texto las veces que se indiquen. Y se manda llamar a dicha función enviándole la cadena de texto, el número de veces a imprimir y otras cadenas de texto.
Ejemplo 7: Programa en el que se declara una función para imprimir una cadena de texto las veces que se indiquen. Y se manda llamar a dicha función enviándole la cadena de texto, el número de veces a imprimir y un diccionario con una clave.
Ejemplo 8: Programa en el que se declara una función que retorna la suma dos cantidades numéricas y la imprime en consola.
Ejercicios de ventanas en Python (2)
Ejemplo 9: Programa que crea una ventana con color de fondo, un tamaño asignado y dos botones con los eventos para abrir y ocultar una ventana, ademas de una ventana hija que permanece oculta y responde a las funciones anteriores. Una función que imprime hola en la consola.
Ejemplo 10: Programa que crea una ventana con color de fondo, un tamaño asignado y dos botones con los eventos para abrir y ocultar una ventana, ademas de una ventana hija que permanece oculta y responde a las funciones anteriores. Una función que imprime en la consola al oprimir el botón abrir ventana secundaria.
Ejemplo 11: Programa que crea una ventana con color de fondo, un tamaño asignado y dos botones con los eventos para abrir y ocultar una ventana, ademas de una ventana hija que permanece oculta y responde a las funciones anteriores. Una función que imprime en la consola al oprimir el botón abrir ventana secundaria. Además evita que la ventana secundaria sea cerrada desde la barra de título y se agrega un botón en para salir desde la ventana secundaria.
lunes, 4 de septiembre de 2017
Geometría Fractal
Un fractal es una figura, que puede ser espacial o plana, formada por componentes infinitos. Su principal característica es que su apariencia y la manera en que se distribuye estadísticamente no varía aun cuando se modifique la escala empleada en la observación.
Los fractales son, por lo tanto, elementos calificados como semi geométricos (por su irregularidad no pertenecen a la geometría tradicional) que disponen de una estructura esencial que se reitera a distintas escalas.
El fractal puede ser creado por el hombre, incluso con intenciones artísticas, aunque también existen estructuras naturales que son fractales (como los copos de nieve).
De acuerdo a Mandelbrot, los fractales pueden presentar 3
clases diferentes de autosimilitud, lo que significa que las partes tienen la
misma estructura que el conjunto total:
- Autosimilitud exacta, el fractal resulta idéntico a cualquier escala;
- Cuasiautosimilitud, con el cambio de escala, las copias del conjunto son muy semejantes, pero no idénticas;
- Autosimilitud estadística, el fractal debe tener dimensiones estadísticas o de número que se conserven con la variación de la escala.
La geometría fractal es una de las cosas más vistosas de la
matemática, generando figuras de una simetría compleja y desconcertante para el
observador no experto. Los artistas la utilizan para hacer cuadros, y muchas
ramas de la ciencia para dar explicación a multitud de fenómenos y situaciones
inexplicables según la geometría clásica no-fractal.
Enlaces:
https://www.pythoniza.me/dibujos-con-python-turtle/
http://www.academia.edu/4266396/Creando_arboles_fractales_con_Turtle_en_Python
Enlaces:
https://www.pythoniza.me/dibujos-con-python-turtle/
http://www.academia.edu/4266396/Creando_arboles_fractales_con_Turtle_en_Python
Suscribirse a:
Entradas (Atom)