simpleguics2pygame — frame
simpleguics2pygame module: simpleguics2pygame/frame.
Class Frame.
Piece of SimpleGUICS2Pygame. https://bitbucket.org/OPiMedia/simpleguics2pygame
- license
GPLv3 — Copyright (C) 2015-2016, 2020-2021 Olivier Pirson
- author
Olivier Pirson — http://www.opimedia.be/
- version
May 4, 2021
- class SimpleGUICS2Pygame.simpleguics2pygame.frame.Frame(title: str, canvas_width: Union[int, float], canvas_height: Union[int, float], control_width: Union[int, float] = 200)[source]
Frame similar to SimpleGUI Frame of CodeSkulptor.
- __deal_event_joypad(event: pygame.event.Event) bool
Private function that dispatch joypad event.
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
event – Pygame event
- Returns
True if some event match, else False
- __deal_event_key(event: pygame.event.Event) bool
Private function that dispatch key event.
- Parameters
event – Pygame event
- Returns
True if some event match, else False
- __deal_event_mouse(event: pygame.event.Event) bool
Private function that dispatch mouse event.
- Parameters
event – Pygame event
- Returns
True if some event match, else False
- __init__(title: str, canvas_width: Union[int, float], canvas_height: Union[int, float], control_width: Union[int, float] = 200) None [source]
Set the frame.
Don’t use directly, use create_frame().
- Parameters
title – str
canvas_width – (int or float) >= 0
canvas_height – (int or float) >= 0
control_width – (int or float) >= 0
- __weakref__
list of weak references to the object (if defined)
- _background_pygame_color = '#ffffff'
Default background color of frame.
- _canvas_border_pygame_color = '#000000'
Border color of canvas.
- _controlpanel_background_pygame_color = '#ffffff'
Background color of control panel.
- _cursor_auto_hide = False
When move cursor, if True then hide cursor when on canvas, else show cursor.
- _display_fps_average = False
If True then display FPS average on the canvas.
- _draw_controlpanel() None [source]
Draw the control panel and two status boxes.
(Not available in SimpleGUI of CodeSkulptor.)
- _draw_statuskey(key: int = 0, pressed: Optional[bool] = None) None [source]
Draw the status box of key.
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
key – int
pressed – None or bool
- _draw_statusmouse(position: Sequence[Union[int, float]] = (0, 0), pressed: Optional[bool] = None) None [source]
Draw the status box of mouse.
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
position – (int or float, int or float) or [int or float, int or float]
pressed – bool
- _fps = 60
Frames per second drawed (frequency of draw and check events)
- _frame_instance = None
The only instance of Frame.
- _frame_padding = 2
The padding in pixels around the canvas
- _get_fps_average() float [source]
Return the framerate average (in frame per second) computed by Pygame.
(Not available in SimpleGUI of CodeSkulptor.)
- Returns
float
- _hide_controlpanel = False
If True then hide control panel (and status box).
- _hide_status = False
If True then hide status box.
- _keep_timers = None
If None then ask (when stop frame) if it should be stop timers when program ending. (This is the default behavior.)
If True then timers keep running when program ending.
If False then stop all timers when program ending.
- _pos_in_control(x: Union[int, float], y: Union[int, float]) Optional[Union[SimpleGUICS2Pygame.simpleguics2pygame.control.Control, SimpleGUICS2Pygame.simpleguics2pygame.control.TextAreaControl]] [source]
If position (x, y) is on the zone of one Control or TextAreaControl then return it else return None.
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
x – int or float
y – int or float
- Returns
None or Control or TextAreaControl
- _print_stats_cache = False
If True then print some statistics of caches after frame stopped.
- _pygame_mode_depth = 0
Default number of bits used to represent color.
See https://www.pygame.org/docs/ref/display.html#pygame.display.set_mode
- _pygame_mode_flags = 0
Default options of graphic mode.
See https://www.pygame.org/docs/ref/display.html#pygame.display.set_mode
- classmethod _pygamecolors_cached_clear() None [source]
Empty the cache of Pygame colors used.
Each color used is cached to accelerate drawing. If you use many many different colors maybe use this function to free memory.
(Not available in SimpleGUI of CodeSkulptor.)
Side effect: Empty _colors._PYGAMECOLORS_CACHED.
- classmethod _pygamefonts_cached_clear() None [source]
Empty the cache of Pygame fonts used.
Each font used with each size is cached to accelerate drawing. If you use many many different sizes maybe use this function to free memory.
(Not available in SimpleGUI of CodeSkulptor.)
Side effect: Empty _fonts.__PYGAMEFONTS_CACHED.
- _save_canvas_and_stop(filename: str, after: Union[int, float] = 1000) None [source]
Wait after ms (first wait until the frame is started), then save the canvas in a file and stop the program.
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
filename – str
after – int or float >= 0
- _save_canvas_request(filename: str) None [source]
Request to save the canvas image in a file.
(The images are saved on each cycle fixed by Frame._fps.)
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
filename – str
- _save_canvas_requests: List[str] = []
List of filenames in which to save canvas image.
- _set_canvas_background_image(image: Optional[SimpleGUICS2Pygame.simpleguics2pygame.image.Image]) None [source]
Set an image to replace the background color of the canvas.
- Parameters
image – None or Image
- classmethod _set_cursor_visible(visible: bool = True) None [source]
If visible is True then show cursor, else hide cursor.
Independently of _cursor_auto_hide value.
- Parameters
visible – bool
- _set_joypadaxe_handler(joypad_handler: Callable[[int, int, float], Any]) None [source]
Set the function handler that will be executed (with the joypad index, the axe index and the value) when axis of joypad move.
(The events are checked on each cycle fixed by Frame._fps.)
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
joypad_handler – function (int >= 0, int >=0, -1 <= float <= 1) -> *
- _set_joypaddown_handler(joypad_handler: Callable[[int, int], Any]) None [source]
Set the function handler that will be executed (with the joypad index and the button index) when a button of joypad is pressed.
(The events are checked on each cycle fixed by Frame._fps.)
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
joypad_handler – function (int >= 0, int >= 0) -> *
- _set_joypadhat_handler(joypad_handler: Callable[[int, int, Tuple[int, int]], Any]) None [source]
Set the function handler that will be executed (with the joypad index, the hat index and the values (a, b) where a and b == -1, 0 or 1) when hat of joypad move.
(The events are checked on each cycle fixed by Frame._fps.)
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
joypad_handler – function (int >= 0, int >= 0, (int, int)) -> *
- _set_joypadup_handler(joypad_handler: Callable[[int, int], Any]) None [source]
Set the function handler that will be executed (with the joypad index and the button index) when a button of joypad is released.
(The events are checked on each cycle fixed by Frame._fps.)
(Not available in SimpleGUI of CodeSkulptor.)
- Parameters
joypad_handler – function (int >= 0, int >= 0) -> *
- _statuskey_background_pygame_color = '#ffffff'
pygame.Color of background in status key box.
- _statuskey_height = 20
Height of the status key box.
- _statuskey_pygame_color = '#000000'
pygame.Color of status key box (text and rectangle).
- _statuskey_pygame_font = None
pygame.font.Font of status key box.
- _statusmouse_background_pygame_color = '#ffffff'
pygame.Color of background in status mouse box.
- _statusmouse_height = 20
Height of the status mouse box.
- _statusmouse_pygame_color = '#000000'
pygame.Color of status mouse box (text and rectangle).
- _statusmouse_pygame_font = None
pygame.font.Font of status mouse box.
- add_button(text: str, button_handler: Callable[[], Any], width: Optional[int] = None) SimpleGUICS2Pygame.simpleguics2pygame.control.Control [source]
Add a button in the control panel.
When the button are pressed and released, button_handler are executed.
If width is not None then text is possibly cutted.
But, in CodeSkulptor, the accurate appearance is browser dependent. And in SimpleGUICS2Pygame, the accurate appearance is font dependent.
- Parameters
text – str
button_handler – function () -> *
width – None or int
- Returns
Control
- add_input(text: str, input_handler: Callable[[str], Any], width: int) SimpleGUICS2Pygame.simpleguics2pygame.control.TextAreaControl [source]
Add a “label” with an input box in the control panel.
When click with left button of mouse on the “label” or input box, the focus is give to this input box.
When press Tab, the focus is give to the next input box (if exist).
When press Enter, this input box lost the focus and input_handler are executed with the input text.
- Parameters
text – str
input_handler – function (str) -> *
width – int
- Returns
Control
- add_label(text: str, width: Optional[int] = None) SimpleGUICS2Pygame.simpleguics2pygame.control.Control [source]
Add a label in the control panel.
If width is not None then text is possibly cutted.
But, in CodeSkulptor, the accurate appearance is browser dependent. And in SimpleGUICS2Pygame, the accurate appearance is font dependent.
- Parameters
text – str
width – None or int
- Returns
Control
- download_canvas_image(filename: str = 'canvas.png') None [source]
Save the content of the canvas in a local file.
In SimpleGUICS2Pygame supported formats are supported formats by Pygame to save: TGA, PNG, JPEG or BMP (see https://www.pygame.org/docs/ref/image.html#pygame.image.save ).
If filename extension is not recognized then TGA format is used.
If filename == ‘’ then a random filename is used, beginning by ‘canvas_’ and with ‘.png’ extension.
In CodeSkulptor the format is always PNG.
(Available in SimpleGUI of CodeSkulptor3 but not in CodeSkulptor2 and not in CodeSkulptor documentation!)
- Parameters
filename – str
- get_canvas_image() None [source]
NOT YET IMPLEMENTED! (Does nothing.)
(Available in SimpleGUI of CodeSkulptor but not in CodeSkulptor documentation!)
- get_canvas_textwidth(text: str, font_size: Union[int, float], font_face: str = 'serif') Union[int, float] [source]
Return the width needed to draw text by Frame.draw_text().
- Parameters
text – str
font_size – (int or float) >= 0
font_face – str == ‘monospace’, ‘sans-serif’, ‘serif’
- Returns
int or float >= 0
- set_canvas_background(color: str) None [source]
Set the background color of the canvas.
- Parameters
color – str
- set_draw_handler(draw_handler: Callable[[SimpleGUICS2Pygame.simpleguics2pygame.canvas.Canvas], Any]) None [source]
Set the function handler that will be executed each cycle fixed by Frame._fps.
- Parameters
draw_handler – function (Canvas) -> *
- set_keydown_handler(key_handler: Callable[[int], Any]) None [source]
Set the function handler that will be executed (with the key code) when a key is released.
(The events are checked on each cycle fixed by Frame._fps.)
- Parameters
key_handler – function (int >= 0) -> *
- set_keyup_handler(key_handler: Callable[[int], Any]) None [source]
Set the function handler that will be executed (with the key code) when a key is pressed.
(The events are checked on each cycle fixed by Frame._fps.)
- Parameters
key_handler – function (int >= 0) -> *
- set_mouseclick_handler(mouse_handler: Callable[[Tuple[int, int]], Any]) None [source]
Set the function handler that will be executed (with the position of the mouse) when the left button of mouse is released.
(The events are checked on each cycle fixed by Frame._fps.)
- Parameters
mouse_handler – function ((int >= 0, int >= 0)) -> *
- set_mousedrag_handler(mouse_handler: Callable[[Tuple[int, int]], Any]) None [source]
Set the function handler that will be executed (with the position of the mouse) for each new mouse position when the left button of mouse is pressed.
(The events are checked on each cycle fixed by Frame._fps.)
- Parameters
mouse_handler – function ((int >= 0, int >= 0)) -> *
- start() None [source]
Start the frame and these handler events.
Warning
With SimpleGUICS2Pygame,
Frame.start()
is blocking untilFrame.stop()
execution or closing window. So timers must be started before, and states must be initialized before. (Or maybe after by a handler function.)(In SimpleGUI of CodeSkulptor this function is not blocking.)
- SimpleGUICS2Pygame.simpleguics2pygame.frame.create_frame(title: str, canvas_width: Union[int, float], canvas_height: Union[int, float], control_width: Union[int, float] = 200) SimpleGUICS2Pygame.simpleguics2pygame.frame.Frame [source]
Create and return an interactive window.
| +-------+ | | title | | +---------+--------------+ | | control | | | | panel | canvas | | | | | | +---------+--------------+
title: title of the window.canvas_width, canvas_height: dimensions of the canvas.control_width: width of the control panel.(The frame is inactive until the execution of Frame.start().)
Don’t run twice!
- Parameters
title – str
canvas_width – (int or float) >= 0
canvas_height – (int or float) >= 0
control_width – (int or float) >= 0
- Returns
Frame
- SimpleGUICS2Pygame.simpleguics2pygame.frame.__all__ = ('Frame', 'create_frame')
Built-in immutable sequence.
If no argument is given, the constructor returns an empty tuple. If iterable is specified the tuple is initialized from iterable’s items.
If the argument is a tuple, the return value is the same object.
[source]