Module albow.widgets.Image
Source code
from pygame import Rect
from albow.core.ResourceUtility import ResourceUtility
from albow.utils import overridable_property
from albow.core.ui.Widget import Widget
from albow.themes.ThemeProperty import ThemeProperty
class Image(Widget):
"""
An Image is a widget that displays an image.
"""
highlight_color = ThemeProperty('highlight_color')
"""
The image highlight color
"""
image = overridable_property('image')
"""
The image to display. The behaviour of this property can be customised by overriding the `get_image()` method.
"""
highlighted = False
"""
Indicates whether or not to highlight the image; Default is _False_
"""
def __init__(self, theImage = None, theRect: Rect = None, **kwds):
"""
TODO Do a unit test on this class
Initializes the widget to display the given image. The initial size is determined by the image.
Args:
theImage: Either a string that is the image name and can be found via the resource lookup methods
or an actual image. (TBD) - I don't like this and will change the API to only accept image names
theRect: The pygame rectangle to draw in
**kwds:
"""
super().__init__(theRect, **kwds)
if theImage:
if isinstance(theImage, str):
theImage = ResourceUtility.get_image(theImage)
w, h = theImage.get_size()
d = 2 * self.margin
self.size = w + d, h + d
self._image = theImage
else:
self._image = None
def get_image(self):
"""
Called to get the value of the image property. By overriding this method, you can make the widget display
an image from an outside source.
Returns: The pygame image
"""
return self._image
def set_image(self, x):
self._image = x
def draw(self, surf):
if self.highlighted:
surf.fill(self.highlight_color)
self.draw_image(surf, self.image)
def draw_image(self, surf, image):
frame = surf.get_rect()
r = image.get_rect()
r.center = frame.center
surf.blit(image, r)
Classes
class Image (theImage=None, theRect=None, **kwds)-
An Image is a widget that displays an image.
TODO Do a unit test on this class
Initializes the widget to display the given image. The initial size is determined by the image.
Args
theImage- Either a string that is the image name and can be found via the resource lookup methods
or an actual image. (TBD) - I don't like this and will change the API to only accept image names
theRect- The pygame rectangle to draw in
**kwds:
Source code
class Image(Widget): """ An Image is a widget that displays an image. """ highlight_color = ThemeProperty('highlight_color') """ The image highlight color """ image = overridable_property('image') """ The image to display. The behaviour of this property can be customised by overriding the `get_image()` method. """ highlighted = False """ Indicates whether or not to highlight the image; Default is _False_ """ def __init__(self, theImage = None, theRect: Rect = None, **kwds): """ TODO Do a unit test on this class Initializes the widget to display the given image. The initial size is determined by the image. Args: theImage: Either a string that is the image name and can be found via the resource lookup methods or an actual image. (TBD) - I don't like this and will change the API to only accept image names theRect: The pygame rectangle to draw in **kwds: """ super().__init__(theRect, **kwds) if theImage: if isinstance(theImage, str): theImage = ResourceUtility.get_image(theImage) w, h = theImage.get_size() d = 2 * self.margin self.size = w + d, h + d self._image = theImage else: self._image = None def get_image(self): """ Called to get the value of the image property. By overriding this method, you can make the widget display an image from an outside source. Returns: The pygame image """ return self._image def set_image(self, x): self._image = x def draw(self, surf): if self.highlighted: surf.fill(self.highlight_color) self.draw_image(surf, self.image) def draw_image(self, surf, image): frame = surf.get_rect() r = image.get_rect() r.center = frame.center surf.blit(image, r)Ancestors
Subclasses
Class variables
var highlight_color-
The image highlight color
var highlighted-
Indicates whether or not to highlight the image; Default is False
var image-
The image to display. The behaviour of this property can be customised by overriding the
get_image()method.
Methods
def draw_image(self, surf, image)-
Source code
def draw_image(self, surf, image): frame = surf.get_rect() r = image.get_rect() r.center = frame.center surf.blit(image, r) def get_image(self)-
Called to get the value of the image property. By overriding this method, you can make the widget display an image from an outside source.
Returns: The pygame image
Source code
def get_image(self): """ Called to get the value of the image property. By overriding this method, you can make the widget display an image from an outside source. Returns: The pygame image """ return self._image def set_image(self, x)-
Source code
def set_image(self, x): self._image = x
Inherited members
Widget:addadd_anchoradd_centeredanchorattention_lostaugment_mouse_eventbg_colorbg_imageborder_colorborder_widthcall_handlercall_parent_handlerdefer_drawingdismissdrawdraw_overfg_colorfocusfocus_switchfontget_cursorget_focusget_margin_rectget_rootget_top_widgetget_visibleglobal_to_localhas_focusinheritedinvalidateis_gl_containerkey_downkey_uplocal_to_globalmarginmenu_barparentparent_resizedpresentrectrelative_moderemoveremove_anchorresizedscale_bgsel_colorset_parentset_size_for_texttab_stopvisible