I want to show like a loading animation on my root screen while a thread is running (btw this thread is a webdriver process, it opens chrome and does some stuff, then it closes the chrome window). Once the thread has finish, I want it to change to another frame but I'm stuck here. Either the main window goes "Not Responding" or it just don't change from loading to the newest screen. This is not the full code cause is quite long but I think is enough for you to understand what I'm trying to pull off. PS: I'm using customtkinter thats why the CTk thing, which is and extension for tkinter to give it a modern look to the UGI but it has pretty much the same methods and everything. def change_login_to_wait(): frame_waiting.grid(row=0, column=0, padx=10, pady=10) frame_discord_login.grid_forget() def change_wait_to_session(): frame_discord_session.grid(row=0, column=0, padx=10, pady=10) frame_autoticket.grid(row=0, column=1, padx=10, pady=10) frame_waiting.grid_forget() def login_user(): change_login_to_wait() thread_request_token = threading.Thread( target=lambda: bls_at.request_discord_token(input_email.get(), input_password.get()) ) thread_request_token.start() while thread_request_token.is_alive(): pass lbl_discord_username.configure(text=bls_at.USER_NAME) change_wait_to_session() btn_login = CTkButton( frame_discord_login, text="Login", command=login_user, width=LOGIN_ELEMENTS_WIDTH ) Continue reading...