Prerequisites: Python GUI – tkinter
Python Tkinter is a GUI programming package or built-in library. Tkinter provides the Tk GUI toolkit with a potent object-oriented interface. Python with Tkinter is the fastest and easiest way to create GUI applications. Creating a GUI using Tkinter is an easy task.
Approach
- Importing the module – tkinter, time
- Create the main window (container)
- Add number of widgets to the main window:Button, Entry
- Apply the event Trigger on the widgets.
Below is the implementation.
python3
import time
from tkinter import *
from tkinter import messagebox
# creating Tk window root = Tk()
# setting geometry of tk window root.geometry( "300x250" )
# Using title() to display a message in # the dialogue box of the message in the # title bar. root.title( "Time Counter" )
# Declaration of variables hour = StringVar()
minute = StringVar()
second = StringVar()
# setting the default value as 0 hour. set ( "00" )
minute. set ( "00" )
second. set ( "00" )
# Use of Entry class to take input from the user hourEntry = Entry(root, width = 3 , font = ( "Arial" , 18 ,""),
textvariable = hour)
hourEntry.place(x = 80 ,y = 20 )
minuteEntry = Entry(root, width = 3 , font = ( "Arial" , 18 ,""),
textvariable = minute)
minuteEntry.place(x = 130 ,y = 20 )
secondEntry = Entry(root, width = 3 , font = ( "Arial" , 18 ,""),
textvariable = second)
secondEntry.place(x = 180 ,y = 20 )
def submit():
try :
# the input provided by the user is
# stored in here :temp
temp = int (hour.get()) * 3600 + int (minute.get()) * 60 + int (second.get())
except :
print ( "Please input the right value" )
while temp > - 1 :
# divmod(firstvalue = temp//60, secondvalue = temp%60)
mins,secs = divmod (temp, 60 )
# Converting the input entered in mins or secs to hours,
# mins ,secs(input = 110 min --> 120*60 = 6600 => 1hr :
# 50min: 0sec)
hours = 0
if mins > 60 :
# divmod(firstvalue = temp//60, secondvalue
# = temp%60)
hours, mins = divmod (mins, 60 )
# using format () method to store the value up to
# two decimal places
hour. set ( "{0:2d}" . format (hours))
minute. set ( "{0:2d}" . format (mins))
second. set ( "{0:2d}" . format (secs))
# updating the GUI window after decrementing the
# temp value every time
root.update()
time.sleep( 1 )
# when temp value = 0; then a messagebox pop's up
# with a message:"Time's up"
if (temp = = 0 ):
messagebox.showinfo( "Time Countdown" , "Time's up " )
# after every one sec the value of temp will be decremented
# by one
temp - = 1
# button widget btn = Button(root, text = 'Set Time Countdown' , bd = '5' ,
command = submit)
btn.place(x = 70 ,y = 120 )
# infinite loop which is required to # run tkinter program infinitely # until an interrupt occurs root.mainloop() |
Output: