ipythonblocks
For more on ipythonblocks see the home page at https://github.com/jiffyclub/ipythonblocks.
from ipythonblocks import BlockGrid
import time
from IPython.display import clear_output
It's possible to do animation of sorts using IPython's clear_output function.
grid = BlockGrid(3, 3)
previous_block = None
for block in grid:
clear_output()
block.green = 255
if previous_block:
previous_block.green = 0
grid.show()
previous_block = block
time.sleep(0.2)
And this is so much fun that it's been added to ipythonblocks: one way is to use the BlockGrid.animate() method. The .animate() method takes
an optional stop_time keyword to control the amount of time between loop steps.
grid = BlockGrid(3, 3)
previous_block = None
for block in grid.animate():
block.green = 255
if previous_block:
previous_block.green = 0
previous_block = block
And another way, if not iterating over the grid, is to use the BlockGrid.flash() method. .flash() takes an optional display_time keyword that
controls for how long each frame is displayed. The default is 0.2 seconds.
grid = BlockGrid(3, 3)
previous_block = None
indices = [[(0, 0), (0, 2), (2, 0), (2, 2)], [(0, 1), (1, 0), (1, 2), (2, 1)]] * 10
for ind in indices:
for i in ind:
grid[i[0], i[1]].green = 255
grid.flash(display_time=0.1)
for i in ind:
grid[i[0], i[1]].green = 0
grid.show()