# How to Draw Rectangles and Squares Using Python Turtle

Python's turtle package can be used to draw various shapes on a canvas. Turtle allows the programmer to move a pen in a specified direction by specifying its heading and distance. Turtle has no built-in primitive for drawing a rectangle or square. However it is easy to create a function to draw a rectangle(or square) in turtle.

The following python program defines a custom function for drawing rectangles using turtle. Note that the centre of the turtle canvas is at 0,0. Hence if you draw just a dot at (0,0) it will be at the centre of the drawing canvas. The function draw_rectangle() requires the co-ordinates of the top left of the rectangle. You also need to specify width, height, thickness and color of the rectangle.

The following example draws a blue rectangle which is 200 pixels in width and 100 pixels in height. We have specified the top left of the rectangle as (-100,50) to position the rectangle at the centre of the canvas. The rectangle drawn has a thickness of 5 pixels.

```import turtle
turtle.setup(500,500)
board = turtle.Turtle()

# draws a rectangle given top left position of a rectangle
def draw_rectangle(board,x,y,width,height,size,color):
board.pencolor(color)
board.pensize(size)

board.up()
board.goto(x,y)
board.down()
# draw top
board.forward(width)
# draw right
board.right(90)
board.forward(height)
# draw bottom
board.right(90)
board.forward(width)
# draw left
board.right(90)
board.forward(height)
board.end_fill()

# in turtle, the centre of the canvas is 0,0
# hence we position the rectangle in the center
# note that we need to pass the top left co-ordinates of rectangle
# draws rectangle with 200 pixels in width and 100 pixels in height
draw_rectangle(board,-100,50,200,100,5,"blue")
turtle.done()
```

The following the sample output from the program, Following python program is a different version which also allows us to specify a fill color for the rectangle. The example is identical to the previous one except that we use a different color to fill the rectangle.

```import turtle
turtle.setup(500,500)
board = turtle.Turtle()

# draws a rectangle given top left position of a rectangle
def draw_filled_rectangle(board,x,y,width,height,size,color,fill):
board.fillcolor(fill)
board.pencolor(color)
board.pensize(size)

board.begin_fill()
board.up()
board.goto(x,y)
board.down()
# draw top
board.forward(width)
# draw right
board.right(90)
board.forward(height)
# draw bottom
board.right(90)
board.forward(width)
# draw left
board.right(90)
board.forward(height)
board.end_fill()

# in turtle, the centre of the canvas is 0,0
# hence we position the rectangle in the center
# note that we need to pass the top left co-ordinates of rectangle
# draws rectangle with 200 pixels in width and 100 pixels in height
# also specifies the rectangle color and the fill color
draw_filled_rectangle(board,-100,50,200,100,5,"blue","green")
turtle.done()
```

The following the sample output from the program showing a filled rectangle, The following program uses looping to draw a two dimensional matrix of identical black squares. Note that we are using black as fill color and white as the stroke color for the rectangles.

```import turtle
turtle.setup(500,500)
board = turtle.Turtle()

# draws a rectangle given top left position of a rectangle
def draw_filled_rectangle(board,x,y,width,height,size,color,fill):
board.fillcolor(fill)
board.pencolor(color)
board.pensize(size)

board.begin_fill()
board.up()
board.goto(x,y)
board.down()
# draw top
board.forward(width)
# draw right
board.right(90)
board.forward(height)
# draw bottom
board.right(90)
board.forward(width)
# draw left
board.right(90)
board.forward(height)
board.end_fill()

# draw a 7x7 matrix of black squares
for x in range(1,8):
for y in range(1,8):
draw_filled_rectangle(board,-200+x*20,y*20,20,20,2,"white","black")

turtle.done()
```

The following the sample output of 7x7 matrix of black squares from the python turtle program, 