class PaletteView(GridView)

A PaletteView is a specialised subclass of GridView designed for implementing tool palettes and other such components. Instead of row and column numbers, the cells in a PaletteView are identified by a single integer index, called an item number, with items being numbered from left to right, top to bottom.

The PaletteView also has a notion of one or more items being selected, and provides support for highlighting selected items in a variety of ways.

PaletteView inherits from ScrollableView and can therefore be made scrollable if needed, although it does not show any scroll bars by default.

The extent of a PaletteView is managed through the num_items, items_per_row and cell_size properties. The num_rows and num_columns properties inherited from GridView, and the extent property inherited from ScrollableView, should not be changed directly.


PaletteView(num_items, items_per_row, cell_size)
Creates a palette view with the specified initial property values.


Total number of items in the palette. The items will be laid out with items_per_row items in each row, using as many rows as necessary. If num_items is not an even multiple of items_per_row, some cells in the last row will be left empty.

The number of items in each row of the palette's extent.

The style in which to highlight selected items. Possible values are:

  • 'fill' - the cell is filled with the highlight_color before calling draw_item().
  • 'frame' - a rectangle is drawn around the cell as specified by highlight_color and highlight_thickness before calling draw_item().
  • '' or None - no automatic highlighting is performed.

Color to use for highlighting of selected items.

When using the 'frame' highlight style, the pen width to use for drawing the highlight rectangle.

Abstract Methods

draw_item(canvas, item_number, item_rect)
Should draw the specified item in the given rectangle. Any automatic highlighting specified by the highlight_style property has already been applied.

click_item(item_number, event)
Called when a mouse_down event occurs in an item.

Should return true if the indicated item is to be regarded as selected.

draw_item_and_highlight(canvas, item_number, item_rect, highlight)
This method can optionally be overridden instead of draw_item() to gain more control over how items are highlighted. Your implementation should draw the specified item, and apply highlighting if highlight is true. If you override this method, draw_item() is not called and no automatic highlighting is performed.


Returns the rectangle corresponding to the given item number. If the item number is out of bounds (less than 0 or greater than num_items - 1), returns None.

item_no_of_cell(row_number, column_number)
Returns the item number corresponding to the specified cell, or None if the cell does not correspond to a valid item.

Returns the row and column numbers of the cell corresponding to the given item number. If the item number is out of bounds (less than 0 or greater than num_items - 1), returns None.