[Tutor] Countdown Clock Programming Question

Evan Sommer evanlespaul at gmail.com
Mon Nov 30 14:23:43 EST 2015


Hello again Alan!

 Do you think you could write a revised code with the modifications that
you suggested? I tried changing the code with your recommendations and I
keep getting syntax errors.

If you could do that, I would greatly appreciate it!!

Thank you for all your help!

Evan Sommer

On Tue, Nov 24, 2015 at 9:01 AM, Evan Sommer <evanlespaul at gmail.com> wrote:

> Hello there!
>
> I am working on a project for an engineering class that I am in at my high
> school, and our task has been to create a clock that counts down the time
> between periods, so that the students walking the hallways know how much
> time they have to get to class. The timer will be displayed on multiple
> monitors throughout the halls. However, the idea behind the countdown clock
> is for the background to change colours when it hits a certain time. The
> goal is for the clock to change from green to yellow at 2 minutes, and
> yellow to red at 1 minute. However, I have been having a hard time trying
> to get the color change to display in one window. If you could give me some
> advice, I'd really appreciate it!
>
> Here's the code:
>
> try:
>     # Python2
>     import Tkinter as tk
> except ImportError:
>     # Python3
>     import tkinter as tk
> import time
> def count_down():
>     # start with 4 minutes --> 240 seconds
>     for t in range(240, 120, -1):
>         # format as 2 digit integers, fills with zero to the left
>         # divmod() gives minutes, seconds
>         sf = "{:01d}:{:02d}".format(*divmod(t, 60))
>         #print(sf)  # test
>         time_str.set(sf)
>         root.update()
>         # delay one second
>         time.sleep(1)# create root/main window
> root = tk.Tk()
> time_str = tk.StringVar()
> # create the time display label, give it a large font
> # label auto-adjusts to the font
> label_font = ('helvetica', 100)
> tk.Label(root, textvariable=time_str, font=label_font, bg='green',
>          fg='white', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
>  # start with 2 minutes --> 119 seconds
> for t in range(240, 120, -1):
>         # format as 2 digit integers, fills with zero to the left
>         # divmod() gives minutes, seconds
>         sf = "{:01d}:{:02d}".format(*divmod(t, 60))
>         #print(sf)  # test
>         time_str.set(sf)
>         root.update()
>         # delay one second
>         time.sleep(1)
> # create the time display label, give it a large font
> # label auto-adjusts to the font
> label_font = ('helvetica', 100)
> tk.Label(root, textvariable=time_str, font=label_font, bg='yellow',
>          fg='white', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
>  # start with 1 minutes --> 59 seconds
> for t in range(120,60, -1):
>         # format as 2 digit integers, fills with zero to the left
>         # divmod() gives minutes, seconds
>         sf = "{:01d}:{:02d}".format(*divmod(t, 60))
>         #print(sf)  # test
>         time_str.set(sf)
>         root.update()
>         # delay one second
>         time.sleep(1)
> # create the time display label, give it a large font
> # label auto-adjusts to the font
> label_font = ('helvetica', 100)
> tk.Label(root, textvariable=time_str, font=label_font, bg='red',
>          fg='white', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
>  # start with 4 minutes --> 240 seconds
> for t in range(60,-1, -1):
>         # format as 2 digit integers, fills with zero to the left
>         # divmod() gives minutes, seconds
>         sf = "{:01d}:{:02d}".format(*divmod(t, 60))
>         #print(sf)  # test
>         time_str.set(sf)
>         root.update()
>         # delay one second
>         time.sleep(1)
> # start the GUI event loop
> root.mainloop()
>
> Thanks for the help!
>
> Sincerely,
>
> Evan Sommer
>


More information about the Tutor mailing list