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
:add
add_anchor
add_centered
anchor
attention_lost
augment_mouse_event
bg_color
bg_image
border_color
border_width
call_handler
call_parent_handler
defer_drawing
dismiss
draw
draw_over
fg_color
focus
focus_switch
font
get_cursor
get_focus
get_margin_rect
get_root
get_top_widget
get_visible
global_to_local
has_focus
inherited
invalidate
is_gl_container
key_down
key_up
local_to_global
margin
menu_bar
parent
parent_resized
present
rect
relative_mode
remove
remove_anchor
resized
scale_bg
sel_color
set_parent
set_size_for_text
tab_stop
visible