Using the below code as a starting point, create a small square wherever the user drags their mouse.
from tkinter import *
c = Canvas(Tk(), width = 500, height = 500)
c.pack()
def onMouseClicked(event):
x = event.x
y = event.y
print("Mouse clicked at:", x, y)
def onMouseDragged(event):
x = event.x
y = event.y
print("Mouse dragged at:", x, y)
c.bind("<Button-1>", onMouseClicked)
c.bind("<B1-Motion>", onMouseDragged)
mainloop()
Calculate the coordinates and create three squares in a row (red, green, and blue) at the bottom left corner of the window like in the image below.
Extend the mouse-click callback function to detect if a mouse click is inside the bounds of one of these three squares. If it is, set a global colour
variable to the corresponding colour and use it to change the colour of your “brush”. Set the named variable outline
to the same colour as fill
to avoid black outlines.
isPointInBoundingBox(pX, pY, bMinX, bMinY, bMaxX, bMaxY)
which returns True
if the point (pX, pY) is inside the box described by (bMinX, bMinY) and (bMaxX, bMaxY) — the top left and the bottom right corners respectively (see image above). If (pX, pY) is not within these bounds, the function should return False
. Use this function to detect clicks in the coloured squares.b
key toggle between square and circular brushes, and make the +
and -
keys increase and decrease brush size respectively.create_line
and previously stored coordinates to draw lines instead of shapes.c
key clear the canvas (refer to Canvas documentation to find out how to clear the canvas) while keeping the colour picker.