from customtkinter import * from PIL import Image class Fooled(CTkToplevel): """A custom Tkinter Toplevel window to display a text label and a GIF image of Jerry from the 'Tom and Jerry' cartoon.""" def __init__(self): """Initialize the Fooled Toplevel window.""" super().__init__() self.title("") set_appearance_mode("light") self.geometry("250x250") self.label = CTkLabel(self, text="Idk, just look outsideš¤£") self.label.pack() self.forward_img = CTkImage(light_image=Image.open("images\\jerry.gif"), size=(199,199)) self.front = CTkLabel(self, text="", image=self.forward_img) self.front.pack() class ShowWhether(CTkToplevel): """A custom Tkinter Toplevel window that simulates a weather forecast process with text labels and a progress bar.""" def __init__(self): """Initialize the ShowWhether Toplevel window.""" super().__init__() self.title("AI weather forecast") set_appearance_mode("light") self.geometry("300x140") self.label = CTkLabel(self, text="Searching Location...") self.label.grid(row=0, padx=20, pady=20) self.label.after(1000, self.on_after) self.pb = CTkProgressBar(self, orientation="horizontal", mode="determinate") self.pb.grid(row=1, padx=20, pady=20) self.pb.set(0) def on_after(self): """Update the label text and progress bar after a delay.""" self.label = CTkLabel(self, text="Analyzing the clouds...") self.label.grid(row=0, padx=20, pady=20) self.label.after(1000, self.on_after1) self.pb.set(0.25) def on_after1(self): """Update the label text and progress bar after a delay.""" self.label = CTkLabel(self, text="Looking outside your window...") self.label.grid(row=0, padx=20, pady=20) self.label.after(1000, self.on_after2) self.pb.set(0.50) def on_after2(self): """Update the label text and progress bar after a delay.""" self.label = CTkLabel(self, text="Gathering last the information...") self.label.grid(row=0, padx=20, pady=20) self.label.after(1000, self.last) self.pb.set(0.75) def last(self): """Finalize the weather forecast process and display the Fooled Toplevel window.""" self.pb.set(1) show = Fooled() show.mainloop() class Get_City(CTk): """A custom Tkinter main application class to get the user's location and initiate the weather forecast.""" def __init__(self): """Initialize the Get_City application.""" super().__init__() set_appearance_mode("light") self.title("AI weather forecast") self.geometry("400x175") self.label = CTkLabel(self, text="Enter your Location: ") self.label.pack(padx=20, pady=15) self.city = CTkEntry(self, placeholder_text="Enter Your city ") self.city.pack(padx=20, pady=10) self.check_weather = CTkButton(self, text="Check weather", command=self.weather) self.check_weather.pack(padx=20, pady=10) def weather(self): """Check if the city input is valid and initiate the weather forecast process.""" if self.city.get() == "": print("Enter a city First") else: show = ShowWhether() show.mainloop() if __name__ == "__main__": app = Get_City() app.mainloop()