Skip to content

Instantly share code, notes, and snippets.

@ABAN-2024
Last active February 17, 2024 19:18
Show Gist options
  • Save ABAN-2024/7c9ebf222f23e55f31ef032e9fa81505 to your computer and use it in GitHub Desktop.
Save ABAN-2024/7c9ebf222f23e55f31ef032e9fa81505 to your computer and use it in GitHub Desktop.
My first project
import tkinter as tk
from tkinter import ttk
import time
counting = False
def count_down():
global counting
counting = True
hour, minute, second = wanted_hour.get(), wanted_minute.get(), wanted_second.get()
total_in_seconds = hour*3600 + minute*60 + second
while total_in_seconds > -1 and counting:
if second >= 0:
if second > 9:
second_var.set(f' {second} ')
second -= 1
total_in_seconds -= 1
root.update()
time.sleep(1)
else:
second_var.set(f' 0{second} ')
second -= 1
total_in_seconds -= 1
root.update()
time.sleep(1)
elif minute > 0:
if minute > 9:
minute -= 1
minute_var.set(f' {minute} ')
second = 59
else:
minute -= 1
minute_var.set(f' 0{minute} ')
second = 59
elif hour > 0:
if hour > 9:
hour -= 1
hour_var.set(f' {hour} ')
minute = 59
else:
hour -= 1
hour_var.set(f' 0{hour} ')
minute = 59
print(total_in_seconds)
def edit():
win = tk.Toplevel()
win.config(padx=10, pady=10)
h_lbl = tk.Label(win, text='Hour : ')
m_lbl = tk.Label(win, text='Minute : ')
s_lbl = tk.Label(win, text='Second : ')
h_lbl.grid(column=0, row=0, ipadx=10)
m_lbl.grid(column=0, row=1, ipadx=10)
s_lbl.grid(column=0, row=2, ipadx=10)
h_ent = tk.Entry(win)
m_ent = tk.Entry(win)
s_ent = tk.Entry(win)
h_ent.grid(column=1, row=0)
m_ent.grid(column=1, row=1)
s_ent.grid(column=1, row=2)
submit_btn = ttk.Button(win, text='Submit',
command=lambda:submit(h_ent.get(),
m_ent.get(),
s_ent.get(),
win)
)
submit_btn.grid(columnspan=2, row=3, pady=10)
def submit(h, m , s, w):
global counting
counting = False
try:
hour = int(h)
except:
hour = 0
try:
minute = int(m)
except:
minute = 0
try:
second = int(s)
except:
second = 0
if 25 > hour > 9:
hour_var.set(f' {hour} ')
elif hour < 10:
hour_var.set(f' 0{hour} ')
else:
hour = 24
hour_var.set(f' {hour} ')
if 25 > minute > 9:
minute_var.set(f' {minute} ')
elif minute < 10:
minute_var.set(f' 0{minute} ')
else:
minute = 59
minute_var.set(f' {minute} ')
if 25 > second > 9:
second_var.set(f' {second} ')
elif second < 10:
second_var.set(f' 0{second} ')
else:
second = 59
second_var.set(f' {second} ')
wanted_hour.set(hour)
wanted_minute.set(minute)
wanted_second.set(second)
w.destroy()
root= tk.Tk()
wanted_hour = tk.IntVar()
wanted_minute = tk.IntVar()
wanted_second = tk.IntVar()
hour_var = tk.StringVar(value=' 00 ')
minute_var = tk.StringVar(value=' 00 ')
second_var = tk.StringVar(value=' 00 ')
hour_lbl = tk.Label(font=('Arial', 50), textvariable=hour_var)
colon1_lbl = tk.Label(font=('Arial', 50),text= ':')
minute_lbl = tk.Label(font=('Arial', 50), textvariable=minute_var)
colon2_lbl = tk.Label(font=('Arial', 50), text= ':')
second_lbl = tk.Label(font=('Arial', 50), textvariable=second_var)
hour_lbl.grid(column=0, row=0)
colon1_lbl.grid(column=1, row=0)
minute_lbl.grid(column=2, row=0)
colon2_lbl.grid(column=3, row=0)
second_lbl.grid(column=4, row=0)
btn_frame = tk.Frame(root)
btn_frame.grid(column=2, row=1)
start_btn = ttk.Button(btn_frame, text='Start', command=count_down)
edit_btn = ttk.Button(btn_frame, text='Edit', command=edit)
edit_btn.grid(column=0, row=0)
start_btn.grid(column=1, row=0)
tk.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment