Waffle

(Contains a tkinter.Frame object)

__init__(self, master, height=3, width=3, dim=20, pad=5, color="white", dotty=False, grid=None, align=None, command=None, visible=True, enabled=None, bg=None)

What is it

The Waffle object display an n*n grid of squares with custom dimensions and padding

Waffle on Windows

How do I make one?

Create a Waffle object like this:

from guizero import App, Waffle
app = App()
waffle = Waffle(app)
app.display()

Starting parameters

When you create a Waffle object you must specify master and you can specify any of the optional parameters. Specify parameters in the brackets, like this: waffle = Waffle(app, height=25)

Parameter Takes Default Compulsory Description
master App or Box - Yes The container to which this widget belongs
align string None - Alignment of this widget within its grid location. Possible values: "top", "bottom", "left", "right". This parameter is only required if the master object has a grid layout.
color color "white" - The default colour of pixels on the waffle
command function name None - The name of a function to call when the waffle is clicked. This function MUST take either zero of two arguments, if the function takes two arguments the x and y co-ordinates of the pixel which was clicked will be given.
dim int 20 - How large one of the pixels on the waffle is
dotty boolean False - Whether the pixels display as dots/circles (True) or squares (False)
grid List [int, int] None - [x,y] coordinates of this widget. This parameter is only required if the master object has a grid layout.
height int 3 - How many pixels high the waffle is
pad int 5 - How much space is between the pixels on the waffle
width int 3 - How many pixels wide the waffle is
remember boolean True - No longer needed - all Waffles will now have a memory.
visible boolean True No If the widget should be visible.
enabled boolean None No If the widget should be enabled. If None (the default) the enabled property will be inherited from the master
bg color None No The background colour of the waffle. Takes a color value.

Parameters in italics will still work but are deprecated - this means you should stop using them because they may not work in future versions of guizero

Methods

You can call the following methods on your Waffle object.

Method Takes Returns Description
after(time, command) time (int), command (function name) - Schedules a single call to command after time milliseconds. (To repeatedly call the same command, use repeat())
cancel(command) command (function name) - Cancels a scheduled call to command
destroy() - - Destroys the widget
disable() - - Disables the widget so that it cannot be interacted with
enable() - - Enables the widget
focus() - - Gives focus to the widget (e.g. focusing a TextBox so that the user can type inside it)
get_all() - List Returns the pixel colours in the grid as a 2D list.
get_pixel(x, y) x (int), y (int) string Returns the colour of the pixel at the specified coordinates. 0,0 is the top left of the grid.
hide() - - Hides the widget from view. This method will unpack the widget from the layout manager.
pixel(x, y) (int), y (int) WafflePixel Returns the pixel at the specified coordinates. 0,0 is the top left of the grid. Waffle.pixel(x,y) is the equivalent of Waffle[x,y]
repeat(time, command) time (int), command (function name) - Repeats command every time milliseconds. This is useful for scheduling a function to be regularly called, for example updating a value read from a sensor.
set_all(color) color (color) - Sets all pixels to the specified colour.
set_pixel(x, y, color) x (int), y (int), color (color) - Sets the pixel at the specified coordinates to the specified colour. 0,0 is the top left of the grid.
show() - - Displays the widget
update_command(command) command (function name) - Updates the function to call when the Waffle is clicked

Properties

You can set and get the following properties:

Method Data type Description
align string The alignment of this widget within its grid location
bg color The background colour of the widget
color color The default colour of pixels on the waffle
dotty bool If True the waffle will display circles
enabled boolean True if the widget is enabled
grid List [x,y] coordinates of this widget. This parameter is only required if the master object has a grid
height size Sets the height of the widget
master App or Box The container to which this widget belongs
pad int The size of the padding between pixels
pixel_size int The size of the one pixel
width size Sets the width of the widget
visible boolean If this widget is visible

Example

Set a pixel colour

A Waffle can remember the colour of each pixel within it.

from guizero import App, Waffle

app = App()

my_waffle = Waffle(app)
my_waffle.set_pixel(2, 1, "red")

# Your waffle will remember what colour each pixel is
print(my_waffle.get_pixel(2,1))

# Even the ones auto-set at the start (which are white by default)
print(my_waffle.get_pixel(1,1))

app.display()

WafflePixel

A WafflePixel object is returned by Waffle.pixel(x,y) and Waffle[x,y].

from guizero import App, Waffle

app = App()

my_waffle = Waffle(app)
my_waffle.pixel(x,y).color = "red"
my_waffle[x,y].dotty = True

app.display()

Properties

You can set and get the following properties:

Method Data type Description
x int Returns the x position of the pixel on the widget
x int Returns the y position of the pixel on the widget
canvas_x int Returns the x position of the pixel on the canvas
canvas_y int Returns the y position of the pixel on the canvas
color color Sets or returns the color of the pixel
dotty bool Set to True to make the pixel a circle
size int Returns the size of the pixel in display pixels