Analog Clock in Python using Turtle

Create Analog Clock in Python using Turtle

In this tutorial, we will learn how to Create Analog Clock in Python using Turtle module. Analog clocks are also called wall clock.

Before we start learning to Create Analog Clock in Python using Turtle, be sure that you know the Turtle module basics because we will use it everywhere in the code along with the Python language. If you don’t know how to draw something with Python’s turtle module or need some help, click here to get help anytime.

Now, we are ready to start with confidence, so let’s start.

First, we will import the required modules.

import turtle
import time

Then, we will set some parameters like creating a screen, setting the background color, setting up geometry, title, and tracer of our turtle window.

screen = turtle.Screen()
screen.bgcolor("white")
screen.setup(width=600, height=600)
screen.title("Ghadi")
screen.tracer(0)

Then, we will create/initalize the turtle module

kalam = turtle.Turtle()

We will then hide the turtle/pen

kalam.hideturtle()

Now, we will set the speed of the turtle using speed() function

kalam.speed(0)

We will also set the size of the pen/turtle using pensize() function

kalam.pensize(3)

Then we have created a function(ghadi_bana) which will be used to create/draw the clock, here we will see the code only, we will understand it using comments later.

def ghadi_bana(ghantaa, minutee, secondd, kalam):
    kalam.up()
    kalam.goto(0, 210)
    kalam.setheading(180)
    kalam.color("red")
    kalam.pendown()
    kalam.circle(210)

    kalam.up()
    kalam.goto(0, 0)
    kalam.setheading(90)

    for z in range(12):
        kalam.fd(190)
        kalam.pendown()
        kalam.fd(20)
        kalam.penup()
        kalam.goto(0, 0)
        kalam.rt(30)

    hands = [("black", 80, 12), ("black", 150, 60), ("black", 110, 60)]
    time_set = (ghantaa, minutee, secondd)    
    for hand in hands:
        time_part = time_set[hands.index(hand)]
        angle = (time_part/hand[2])*360
        kalam.penup()
        kalam.goto(0, 0)
        kalam.color(hand[0])
        kalam.setheading(90)
        kalam.rt(angle)
        kalam.pendown()
        kalam.fd(hand[1])

Now, we will create a while loop which will handle the hands of our Analog Clock. We will be creating three hands as a wall clock have for hours, minutes, and seconds. Check the code below:

while True:
    ghantaa = int(time.strftime("%I"))
    minutee = int(time.strftime("%M"))
    secondd = int(time.strftime("%S"))
    ghadi_bana(ghantaa, minutee, secondd, kalam)
    screen.update()
    time.sleep(1)
    kalam.clear()

Now, let’s see the complete code, and we will use the comments to understand our “Create Analog Clock in Python using Turtle” project in more details.

Code To Create Analog Clock in Python using Turtle

import turtle
import time

screen = turtle.Screen() #turtle screen
screen.bgcolor("white") #background of the screen
screen.setup(width=600, height=600) #geometry of the GUI
screen.title("Ghadi") #title of the GUI
screen.tracer(0) #tracer for the GUI

kalam = turtle.Turtle() #the turtle
kalam.hideturtle() #make the turtle invisible
kalam.speed(0) #setting the speed to 0
kalam.pensize(3) #setting the pensize to 3


def ghadi_bana(ghantaa, minutee, secondd, kalam): #function with 4 parameters

    kalam.up() #not ready to draw
    kalam.goto(0, 210) #positioning the turtle
    kalam.setheading(180) #setting the heading to 180
    kalam.color("red") #setting the color of the pen to red
    kalam.pendown() #starting to draw
    kalam.circle(210) #a circle with the radius 210

    kalam.up() #not ready to draw
    kalam.goto(0, 0) #positioning the turtle
    kalam.setheading(90) #same as seth(90) in newer version

    for z in range(12): #loop 
        kalam.fd(190) #moving forward at 190 units
        kalam.pendown() #starting to draw
        kalam.fd(20) #forward at 20
        kalam.penup() #not ready to draw
        kalam.goto(0, 0) #positioning the turtle
        kalam.rt(30) #right at an angle of 30 degrees

    hands = [("black", 80, 12), ("black", 150, 60), ("black", 110, 60)] #the color and the hands set
    time_set = (ghantaa, minutee, secondd) #setting the time

    for hand in hands: #loop
        time_part = time_set[hands.index(hand)] #time part in the hand index in hands of time_Set
        angle = (time_part/hand[2])*360 #setting the angle for the clock
        kalam.penup() #not ready to draw
        kalam.goto(0, 0) #positioning the turtle
        kalam.color(hand[0]) #setting the color of the hand
        kalam.setheading(90) #same as seth(90)
        kalam.rt(angle) #right at an angle of "right"
        kalam.pendown() #ready to draw
        kalam.fd(hand[1]) #forward at a unit of 1st index of the hand var


while True:
    ghantaa = int(time.strftime("%I")) #setting the hour from the time module
    minutee = int(time.strftime("%M")) #setting the minute from the time module
    secondd = int(time.strftime("%S")) #setting the second as above

    ghadi_bana(ghantaa, minutee, secondd, kalam) #calling the ghanta_bana() function with the given parameters
    screen.update() #updating the scren
    time.sleep(1) #making the code sleep for a second with the time module
    kalam.clear() #clearing the pen

Output:

Create Analog Clock in Python using Turtle

Thank you for reading till the end.

Keep Learning, Keep Coding


Also Read:

Share:

Author: Harry

Hello friends, thanks for visiting my website. I am a Python programmer. I, with some other members, write blogs on this website based on Python and Programming. We are still in the growing phase that's why the website design is not so good and there are many other things that need to be corrected in this website but I hope all these things will happen someday. But, till then we will not stop ourselves from uploading more amazing articles. If you want to join us or have any queries, you can mail me at admin@copyassignment.com Thank you