Module src.graphics
Classes
class Canvas (width=754, height=492)
-
Canvas is a simplified interface on top of the tkinter Canvas to allow for easier manipulation of graphical objects. Canvas has a variety of functionality to create, modify and delete graphical objects, and also get information about the canvas contents. Canvas is a subclass of
tkinter.Canvas
, so all tkinter functionality is also available if needed.When creating a canvas, you can optionally specify a width and height. If no width and height are specified, the canvas is initialized with its default size.
Args
width
- the width of the Canvas to create (or if not specified, uses
Canvas.DEFAULT_WIDTH
) height
- the height of the Canvas to create (or if not specified, uses
Canvas.DEFAULT_HEIGHT
)
Ancestors
- tkinter.Canvas
- tkinter.Widget
- tkinter.BaseWidget
- tkinter.Misc
- tkinter.Pack
- tkinter.Place
- tkinter.Grid
- tkinter.XView
- tkinter.YView
Class variables
var BOTTOM
-
Directions to use for adding interactors to different sides of the canvas.
BOTTOM refers to the bottom of the window. var COLORS
-
This is a list of names of all colors available to use for graphics on the Canvas. This list of Tkinter colors was taken from https://stackoverflow.com/questions/4969543/colour-chart-for-tkinter-and-tix.
var DEFAULT_HEIGHT
-
The default height of the canvas is 492.
var DEFAULT_TITLE
-
The default text shown in the canvas window titlebar is 'Canvas'.
var DEFAULT_WIDTH
-
The default width of the canvas is 754.
var LEFT
-
Directions to use for adding interactors to different sides of the canvas.
LEFT refers to the left side of the window. var RIGHT
-
Directions to use for adding interactors to different sides of the canvas.
RIGHT refers to the right side of the window. var TOP
-
Directions to use for adding interactors to different sides of the canvas.
TOP refers to the top side of the window.
Methods
-
Adds a button to the canvas with the specified title at the specified location. Buttons are added from left to right at the top and bottom of the window and top to bottom on the sides of the window.
Args
title
- the title to display on the button. Must be unique among button names.
location
- the region (Canvas.TOP/LEFT/BOTTOM/RIGHT) where the button should be added around the canvas.
kwargs
- other tkinter keyword args
Returns
a reference to the button added to the window at the specified location. Use this with the .destroy() function to delete the button later if needed. E.g. button = create_button(…); button.destroy();
def create_image(self, x, y, file_path, **kwargs)
-
Creates an image with the specified filename at the specified position on the canvas. The image will be the same size as the image file loaded in.
Args
x
- the x coordinate of the top-left corner of the image on the canvas
y
- the y coordinate of the top-left corner of the image on the canvas
file_path
- the path to the image file to load and display on the canvas
kwargs
- other tkinter keyword args
Returns
the graphical image object that is displaying the specified image at the specified location.
def create_image_with_size(self, x, y, width, height, file_path, **kwargs)
-
Creates an image with the specified filename at the specified position on the canvas, and resized to the specified width and height.
Args
x
- the x coordinate of the top-left corner of the image on the canvas
y
- the y coordinate of the top-left corner of the image on the canvas
width
- the width to set for the image
height
- the height to set for the image
file_path
- the path to the image file to load and display on the canvas
kwargs
- other tkinter keyword args
Returns
the graphical image object that is displaying the specified image at the specified location with the specified size.
def create_line(self, x1, y1, x2, y2, *args, **kwargs)
-
Creates and returns a line graphical object on the screen from the specified point to the specified point. The line is drawn black.
Args
x1
- the starting x location of the line
y1
- the starting y location of the line
x2
- the ending x location of the line
y2
- the ending y location of the line
args
- you can optionally specify additional points on the line or shape
kwargs
- other tkinter keyword args
Returns
the graphical line object between the two specified points.
def create_oval(self, x1, y1, x2, y2, **kwargs)
-
Creates and returns an oval graphical object on the screen contained within the bounding box whose top left corner is the first coordinate, and whose bottom right corner is the second coordinate. The oval is drawn unfilled with a black outline.
Args
x1
- the top-left x location of the bounding box
y1
- the top-left y location of the bounding box
x2
- the bottom-right x location of the bounding box
y2
- the bottom-right y location of the bounding box
kwargs
- other tkinter keyword args
Returns
the graphical oval object at the specified location.
def create_rectangle(self, x1, y1, x2, y2, *args, **kwargs)
-
Creates and returns a rectangle graphical object on the screen with its top-left corner at the first coordinate and its bottom-right corner at the second coordinate. The rect is drawn unfilled with a black outline.
Args
x1
- the top-left x location of the rect
y1
- the top-left y location of the rect
x2
- the bottom-right x location of the rect
y2
- the bottom-right y location of the rect
kwargs
- other tkinter keyword args
Returns
the graphical rectangle object at the specified location.
def create_text(self, x, y, text, **kwargs)
-
Creates and returns a text graphical object on the screen at the specified location with the specified text. The specified x and y location is for the center of the text. The text will be in size 13 font.
Args
x
- the x location of the center of the text
y
- the y location of the center of the text
text
- the text that should be displayed on the canvas at the given position
kwargs
- other tkinter keyword args
Returns
the graphical text object that is displaying the specified text at the specified location.
def create_text_field(self, label, location, **kwargs)
-
Adds a label and text field pair to the canvas with the specified label text at the specified location. Interactors are added from left to right at the top and bottom of the window and top to bottom on the sides of the window. Stores a reference to this text field in the Canvas map of text fields.
Args
label
- the label text to display next to the text field, and the name of the text field. Must be unique among text field names.
location
- the region (Canvas.TOP/LEFT/BOTTOM/RIGHT) where the label/text field should be added around the canvas.
kwargs
- other tkinter keyword args for the text field
Returns
a reference to the text field and the label (in that order) added to the window at the specified location.
def delete(self, obj)
-
Remove the specified graphical object from the canvas.
Args
obj
- the graphical object to remove from the canvas
def delete_all(self)
-
Remove all graphical objects from the canvas.
def delete_text_field(self, text_field_name)
-
Removes the text field and corresponding label from both the canvas and the internal data structures tracking text fields.
Args
text_field_name
- the name given when the text field was created.
def find_all(self)
-
Get a list of all graphical objects on the canvas.
Returns
a list of all graphical objects on the canvas.
def find_element_at(self, x, y)
-
Finds the topmost element overlapping this location.
Args
x
- the x coordinate of the location
y
- the y coordinate of the location
Returns
the top-most graphical object on the canvas at this location (None otherwise)
def find_overlapping(self, x1, y1, x2, y2)
-
Get a list of graphical objects on the canvas that overlap with the specified bounding box.
Args
x1
- the x coordinate of the upper-left corner of the bounding box
y1
- the y coordinate of the upper-left corner of the bounding box
x2
- the x coordinate of the lower-right corner of the bounding box
y2
- the y coordinate of the lower-right corner of the bounding box
Returns
a list of graphical objects on the canvas that overlap with this bounding box.
def get_canvas_background_color(self)
-
Gets the name of the background color of the canvas.
Returns
the color of the canvas background, as a string.
def get_canvas_height(self)
-
Get the height of the canvas.
Returns
the current height of the canvas.
def get_canvas_width(self)
-
Get the width of the canvas.
Returns
the current width of the canvas.
def get_fill_color(self, obj)
-
Gets the fill color of the specified graphical object. Cannot be used to get the fill color of non-fillable objects such as images - throws a tkinter.TclError.
Args
obj
- the object for which to set the fill color
Returns
The current fill color of the object, as a string. If this is the empty string, the object is not filled.
def get_height(self, obj)
-
Returns the height of the specified graphical object.
Args
obj
- the object for which to calculate the height
Returns
the height of the specified graphical object.
def get_left_x(self, obj)
-
Returns the leftmost x coordinate of the specified graphical object.
Args
obj
- the object for which to calculate the leftmost x coordinate
Returns
the leftmost x coordinate of the specified graphical object.
def get_mouse_x(self)
-
Returns the mouse's current X location on the canvas.
Returns
the mouses's current X location on the canvas.
def get_mouse_y(self)
-
Returns the mouse's current Y location on the canvas.
Returns
the mouse's current Y location on the canvas.
-
Returns a list of all button clicks that have occurred since the last call to this function or any registered button handler.
Returns
a list of all button clicks that have occurred since the last call to this function or any registered button handler. Each button click is the name of the button clicked, e.g. clicks = canvas.get_new_button_clicked(); print(clicks[0]).
def get_new_key_presses(self)
-
Returns a list of all key presses that have occurred since the last call to this function or any registered key handler.
Returns
a list of all key presses that have occurred since the last call to this function or any registered key handler. Each key press contains a keysym property for the key pressed, e.g. presses = canvas.get_new_key_presses(); print(presses[0].keysym).
def get_new_mouse_clicks(self)
-
Returns a list of all mouse clicks that have occurred since the last call to this function or any registered mouse handler.
Returns
a list of all mouse clicks that have occurred since the last call to this function or any registered mouse handler. Each mouse click contains x and y properties for the click location, e.g. clicks = canvas.get_new_mouse_clicks(); print(clicks[0].x).
def get_new_mouse_drag_events(self)
-
Returns a list of all mouse drag events that have occurred since the last call to this function or any registered mouse handler.
Returns
a list of all mouse drag events that have occurred since the last call to this function or any registered mouse handler. Each mouse drag event contains x and y properties for the drag location, e.g. mouse_drag_events = canvas.get_new_mouse_drag_events(); print(mouse_drag_events[0].x).
def get_outline_color(self, obj)
-
Gets the outline color of the specified graphical object. Cannot be used to get the outline color of non-outlined objects such as images or text - throws a tkinter.TclError.
Args
obj
- the object for which to get the outline color
Returns
the outline color of the given object, as a string. If this is the empty string, the object does not have an outline.
def get_random_color(self)
-
Returns a randomly-selected color.
Returns
A randomly-selected color, as a string.
def get_text(self, obj)
-
Returns the text displayed by the given text object. Cannot be used on any non-text graphical object.
Args
obj
- the text object for which to get the displayed text
Returns
the text currently displayed by this graphical object.
def get_text_field_text(self, text_field_name)
-
Returns the current contents of the text field with the specified name.
Args
text_field_name
- the name given when the text field was created.
Returns
the current contents of the given text field, or None if there is no text field with the given name.
def get_top_y(self, obj)
-
Returns the topmost y coordinate of the specified graphical object.
Args
obj
- the object for which to calculate the topmost y coordinate
Returns
the topmost y coordinate of the specified graphical object.
def get_width(self, obj)
-
Returns the width of the specified graphical object.
Args
obj
- the object for which to calculate the width
Returns
the width of the specified graphical object.
-
Gets whether or not the given graphical object is hidden or visible on the canvas.
Args
obj
- the graphical object to get the state of
Returns
True if the given graphical object is hidden, or False otherwise.
def lower_behind(self, obj, behind)
-
Sets the first object to be directly behind the second object in Z-ordering on the canvas. In other words, the first object will now appear directly behind the second object and all objects in front of the second object, but in front of all objects that the second object is also in front of.
Args
obj
- the object to put in front of the second object
behind
- the object to put the first object directly behind
def lower_to_back(self, obj)
-
Sends the given object to be behind all the other objects on the canvas
Args
obj
- the object to put behind all other objects on the canvas
def mouse_is_on_canvas(self)
-
Returns whether or not the mouse is currently on the canvas.
Returns
True if the mouse is currently on the canvas, or False otherwise.
def move(self, obj, dx, dy)
-
Moves the specified graphical object by the specified amounts in the x and y directions.
Args
obj
- the object to move
dx
- the amount by which to change the object's x position
dy
- the amount by which to change the object's y position
def move_to(self, obj, new_x, new_y)
-
Same as
Canvas.moveto()
. def moveto(self, obj, x='', y='')
-
Moves the specified graphical object to the specified location, which is its bounding box's new upper-left corner.
Args
obj
- the object to move
x
- the new x coordinate of the upper-left corner for the object
y
- the new y coordinate of the upper-left corner for the object
def raise_in_front_of(self, obj, above)
-
Sets the first object to be directly in front of the second object in Z-ordering on the canvas. In other words, the first object will now appear in front of the second object and all objects behind the second object, but behind all objects that the second object is also behind.
Args
obj
- the object to put in front of the second object
above
- the object to put the first object directly in front of
def raise_to_front(self, obj)
-
Sends the given object to the very front of all the other objects on the canvas.
Args
obj
- the object to bring to the front of the objects on the canvas
def set_canvas_background_color(self, color)
-
Sets the background color of the canvas to the specified color string.
Args
color
- the color (string) to make the background of the canvas.
def set_canvas_size(self, width, height)
-
Sets the size of the canvas and its containing window to the specified width and height.
Args
width
- the width to set for the canvas and containing window
height
- the height to set for the canvas and containing window
def set_canvas_title(self, title)
-
Sets the title text displayed in the Canvas's window title bar to be the specified text.
Args
title
- the text to display in the title bar
def set_color(self, obj, color)
-
Sets the fill and outline color of the specified graphical object. If the object doesn't have one or more of a fill or outline color, setting of that color is ignored.
Args
obj
- the object for which to set the color
color
- the color to set the fill and outline colors to be, as a string. If this is the empty string, the object will be set to be not filled and not outlined.
def set_fill_color(self, obj, fill_color)
-
Sets the fill color of the specified graphical object. Cannot be used to change the fill color of non-fillable objects such as images - throws a tkinter.TclError.
Args
obj
- the object for which to set the fill color
fill_color
- the color to set the fill color to be, as a string. If this is the empty string, the object will be set to be not filled.
def set_font(self, obj, font, size)
-
Sets the font and size for the text displayed by the given text object. Cannot be used on any non-text graphical object.
Args
obj
- the text object for which to set the font and size
font
- the name of the font, as a string
size
- the size of the font
-
Sets the given graphical object to be either hidden or visible on the canvas.
Args
obj
- the graphical object to make hidden or visible on the canvas.
hidden
- True if the object should be hidden, False if the object should be visible.
-
Set the specified function to be called whenever a button is clicked. If this function is called multiple times, only the last specified function is called when a button is clicked.
Args
callback
- a function to call whenever a button is clicked. Must take in one parameter, which is the text name of the button that was just clicked. E.g. func(button_name). If this parameter is None, no function will be called when a button is clicked.
def set_on_key_pressed(self, callback)
-
Set the specified function to be called whenever a keyboard key is pressed. If this function is called multiple times, only the last specified function is called when a key is pressed.
Args
callback
- a function to call whenever a key is pressed. Must take in one parameter, which is the text name of the key that was just pressed (e.g. 'a' for the a key, 'b' for the b key, etc). E.g. func(key_char). If this parameter is None, no function will be called when a key is pressed.
def set_on_mouse_dragged(self, callback)
-
Set the specified function to be called whenever the mouse is dragged (moved while held down). If this function is called multiple times, only the last specified function is called when the mouse is dragged.
Args
callback
- a function to call whenever the mouse is dragged. Must take in two parameters, which are the x and y coordinates (in that order) of the mouse drag event that just occurred. E.g. func(x, y). If this parameter is None, no function will be called when the mouse is dragged.
def set_on_mouse_pressed(self, callback)
-
Set the specified function to be called whenever the mouse is pressed. If this function is called multiple times, only the last specified function is called when the mouse is pressed.
Args
callback
- a function to call whenever the mouse is pressed. Must take in two parameters, which are the x and y coordinates (in that order) of the mouse press that just occurred. E.g. func(x, y). If this parameter is None, no function will be called when the mouse is pressed.
def set_on_mouse_released(self, callback)
-
Set the specified function to be called whenever the mouse is released. If this function is called multiple times, only the last specified function is called when the mouse is released.
Args
callback
- a function to call whenever the mouse is released. Must take in two parameters, which are the x and y coordinates (in that order) of the mouse release that just occurred. E.g. func(x, y). If this parameter is None, no function will be called when the mouse is released.
def set_outline_color(self, obj, outline_color)
-
Sets the outline color of the specified graphical object. Cannot be used to change the outline color of non-outlined objects such as images or text - throws a tkinter.TclError.
Args
obj
- the object for which to set the outline color
outline_color
- the color to set the outline color to be, as a string. If this is the empty string, the object will be set to not have an outline.
def set_outline_width(self, obj, width)
-
Sets the thickness of the outline of the specified graphical object. Cannot be used on objects that are not outline-able, such as images or text.
Args
obj
- the object for which to set the outline width
width
- the width to set the outline to be.
def set_size(self, obj, width, height)
-
Sets the width and height of the specified graphical object. Cannot be used to change the size of an image.
Args
obj
- the object for which to set the width and height
width
- the new width for the object
height
- the new height for the object
def set_text(self, obj, text)
-
Sets the text displayed by the given text object. Cannot be used on any non-text graphical object.
Args
obj
- the text object for which to set the displayed text
text
- the new text for this graphical object to display
def wait_for_click(self)
-
Waits until a mouse click occurs, and then returns.