Amazing-Python-Scripts
167 строк · 5.6 Кб
1from datetime import datetime2import tkinter as tk3import tkinter.messagebox4import pytz5
6# Creating main Window
7window = tk.Tk()8window.title("Time-Zone Converter")9window.geometry('480x300')10
11# giving the format of datetime
12format = "%Y-%m-%d %H:%M"13
14# entry box for all the values
15entry_cur_tz = tk.Entry(window, width=20, font=('arial', 10))16entry_cur_tz.place(x=20, y=100)17
18entry_cnv_tz = tk.Entry(window, width=20, font=('arial', 10))19entry_cnv_tz.place(x=250, y=100)20
21entry_cur_tm = tk.Entry(window, width=20, font=('arial', 10))22entry_cur_tm.place(x=20, y=170)23
24entry_cnv_tm = tk.Entry(window, width=20, font=('arial', 10))25entry_cnv_tm.place(x=250, y=170)26
27# All Entry Box configuration
28
29
30def on_focus_in_ent_cur_tz(event):31if entry_cur_tz.get() == 'Eg. Asia/Kolkata':32entry_cur_tz.delete(0, "end")33entry_cur_tz.insert(0, '')34entry_cur_tz.config(fg='black')35
36
37def on_focus_out_ent_cur_tz(event):38if entry_cur_tz.get() == '':39entry_cur_tz.insert(0, 'Eg. Asia/Kolkata')40entry_cur_tz.config(fg='grey')41
42
43entry_cur_tz.insert(0, 'Eg. Asia/Kolkata')44entry_cur_tz.bind('<FocusIn>', on_focus_in_ent_cur_tz)45entry_cur_tz.bind('<FocusOut>', on_focus_out_ent_cur_tz)46entry_cur_tz.config(fg='grey')47
48
49def on_focus_in_ent_cnv_tz(event):50if entry_cnv_tz.get() == 'Eg. Australia/Sydney':51entry_cnv_tz.delete(0, "end")52entry_cnv_tz.insert(0, '')53entry_cnv_tz.config(fg='black')54
55
56def on_focus_out_ent_cnv_tz(event):57if entry_cnv_tz.get() == '':58entry_cnv_tz.insert(0, 'Eg. Australia/Sydney')59entry_cnv_tz.config(fg='grey')60
61
62entry_cnv_tz.insert(0, 'Eg. Australia/Sydney')63entry_cnv_tz.bind('<FocusIn>', on_focus_in_ent_cnv_tz)64entry_cnv_tz.bind('<FocusOut>', on_focus_out_ent_cnv_tz)65entry_cnv_tz.config(fg='grey')66
67
68def on_focus_in_ent_cur_tm(event):69if entry_cur_tm.get() == "Eg. 2023-06-02 20:01":70entry_cur_tm.delete(0, "end")71entry_cur_tm.insert(0, '')72entry_cur_tm.config(fg='black')73
74
75def on_focus_out_ent_cur_tm(event):76if entry_cur_tm.get() == '':77entry_cur_tm.insert(0, "Eg. 2023-06-02 20:01")78entry_cur_tm.config(fg='grey')79
80
81entry_cur_tm.insert(0, "Eg. 2023-06-02 20:01")82entry_cur_tm.bind('<FocusIn>', on_focus_in_ent_cur_tm)83entry_cur_tm.bind('<FocusOut>', on_focus_out_ent_cur_tm)84entry_cur_tm.config(fg='grey')85
86
87def on_focus_in_ent_cnv_tm(event):88if entry_cnv_tm.get() == 'Click convert button':89entry_cnv_tm.delete(0, "end")90entry_cnv_tm.insert(0, '')91entry_cnv_tm.config(fg='black')92
93
94def on_focus_out_ent_cnv_tm(event):95if entry_cnv_tm.get() == '':96entry_cnv_tm.insert(0, 'Click convert button')97entry_cnv_tm.config(fg='grey')98
99
100entry_cnv_tm.insert(0, 'Click convert button')101entry_cnv_tm.bind('<FocusIn>', on_focus_in_ent_cnv_tm)102entry_cnv_tm.bind('<FocusOut>', on_focus_out_ent_cnv_tm)103entry_cnv_tm.bind("<Key>", lambda a: "break")104entry_cnv_tm.config(fg='grey')105
106
107# All label with text
108title_lbl = tk.Label(master=window, text="Time-Zone Converter",109font=("broadway", 25), bg="black", fg='white')110title_lbl.place(x=48, y=10)111
112cur_tz_lbl = tk.Label(master=window, text="Current timezone name", font=(113"Times Roman", 10), fg='black')114cur_tz_lbl.place(x=16, y=80)115cnv_tz_lbl = tk.Label(master=window, text="Convert timezone name", font=(116"Times Roman", 10), fg='black')117cnv_tz_lbl.place(x=246, y=80)118
119cur_tm_lbl = tk.Label(master=window, text="Current time (YYYY-MM-DD H:M)",120font=("Times Roman", 10), fg='black')121cur_tm_lbl.place(x=16, y=150)122cnv_tm_lbl = tk.Label(master=window, text="Converted time (YYYY-MM-DD H:M)",123font=("Times Roman", 10), fg='black')124cnv_tm_lbl.place(x=246, y=150)125
126# Convert button function
127
128
129def cnv_time():130date_input = True131
132# Check all the data is entered or not133if entry_cur_tz.get() == 'Eg. Asia/Kolkata' or entry_cnv_tz.get() == 'Eg. Australia/Sydney' or entry_cur_tm.get() == 'Eg. 2023-06-02 20:01' or entry_cnv_tm == 'Click convert button':134tkinter.messagebox.showerror(title="Error", message="Invalid inputs")135# Check the date input format136elif entry_cur_tm.get() != 'Eg. 2023-06-02 20:01':137try:138my_timestamp = datetime.strptime(139entry_cur_tm.get(), '%Y-%m-%d %H:%M')140except ValueError:141date_input = False142tkinter.messagebox.showerror(143title="Error", message="Invalid Date input")144# Check if timezone entered is right or wrong and convert the date145if entry_cur_tz != 'Eg. Asia/Kolkata' and entry_cnv_tz != 'Eg. Australia/Sydney':146try:147if date_input == True:148date_time = datetime.strptime(149entry_cur_tm.get(), '%Y-%m-%d %H:%M')150org_timezone = pytz.timezone(entry_cur_tz.get())151new_timezone = pytz.timezone(entry_cnv_tz.get())152org_timestamp = org_timezone.localize(date_time)153new_timestamp = org_timestamp.astimezone(new_timezone)154entry_cnv_tm.delete(0, "end")155entry_cnv_tm.config(fg='black')156entry_cnv_tm.insert(0, new_timestamp.strftime(format))157except pytz.exceptions.UnknownTimeZoneError:158tkinter.messagebox.showerror(159title="Error", message="Invalid timezone input")160
161
162# Convert Button
163button_cnv = tk.Button(window, text="Convert", width=10, command=cnv_time)164button_cnv.place(x=20, y=210)165
166window.resizable(False, False)167window.mainloop()168