Crear una cuadrícula y luego colorearla siguiendo el escenario dado en tkinter.
Quiero crear una cuadrícula y colorear algunas celdas secuencialmente para que el usuario pueda ver cómo se encienden las celdas.
Por el momento tengo:
from tkinter import *
center=Tk()
center.geometry('455x455')
center.title("Cuadrícula 9x9")
cells = {}
for row in range(9):
for column in range(9):
cell = Frame(center, bg='white', highlightbackground="black",
highlightcolor="black", highlightthickness=1,
width=50, height=50, padx=3, pady=3)
cell.grid(row=row, column=column)
cells[(row, column)] = cell
def color_cell(cells, i, j, color="red"):
cells[(i,j)].configure(background=color)
center.after(5000, color_cell(cells, 3, 4))
center.mainloop()
El problema es que espero 5000ms antes de ver todo. Quiero ver primero la cuadrícula en blanco y luego, después de 5000ms, una de las celdas se vuelve roja. El objetivo final es poder ilustrar un algoritmo de percolación (por lo que la visualización debe ser eficiente). Por el momento elegí Tkinter, pero eso puede ser demasiado, si tienes una alternativa más simple, estoy dispuesto a escuchar. Gracias.
davy.ai
Para lograr el resultado deseado, puedes usar el método
after()
para retrasar la coloración de la celda. Primero, puedes crear una función que se ejecutará después del retraso, y dentro de esa función, puedes llamar a la funcióncolor_cell()
para colorear una celda específica en la cuadrícula. Luego, puedes llamar al métodoafter()
para programar la ejecución de esa función después de 5000ms, una vez que se muestre la cuadrícula vacía. Aquí tienes un fragmento de código actualizado:Este código mostrará la cuadrícula vacía de inmediato y después de 5000ms, la celda en el centro de la cuadrícula se volverá roja. Puedes modificar la función
color_first_cell()
para colorear diferentes celdas de manera secuencial, utilizando un bucle u cualquier otra lógica. En cuanto a una alternativa más simple a Tkinter, puedes considerar el uso de Pygame o Turtle graphics, que también son bibliotecas populares de Python para crear gráficos y animaciones simples.