In the python code below, I'm using message_entry.delete(1.0, tk.END)
to delete the text that was entered into the text widget. The problem is that it waits 5 seconds before the text is deleted. I'm aware that this is because of time.sleep(5)
in the script below.
Thing is, message_entry.delete(1.0, tk.END)
command is above this sleep command, so it should execute before this sleep command and delete the text immediately. Why is it waiting? I want to delete the text as soon as the message is extracted.
import tkinter as tk
from tkinter import ttk
from datetime import datetime
from PIL import Image, ImageTk
import time
def clear_default_text(event):
message = message_entry.get(1.0, tk.END)
ask = "Ask me anything..."
if ask in message:
message_entry.delete(1.0, tk.END)
def send_message(event=None):
message = message_entry.get(1.0, "end-1c")
message = message.strip()
message_entry.delete(1.0, tk.END)
if not message:
pass
else:
time.sleep(5)
root = tk.Tk()
root.title("Chat")
# Maximize the window
root.attributes('-zoomed', True)
style = ttk.Style()
style.theme_use("clam")
message_entry = tk.Text(root, padx=17, insertbackground='white', width=70, height=1, spacing1=20, spacing3=20, font=('Open Sans', 14))
message_entry.pack(side=tk.LEFT, padx=(500, 0), pady=(0, 70))
#message_entry.insert(0, "Ask me anything...")
message_entry.insert(1.0, "Ask me anything...")
message_entry.mark_set("insert", "%d.%d" % (0,0))
message_entry.bind("<Key>", clear_default_text) # Bind the Key event
message_entry.bind("<Return>", send_message)
#message_entry.bind("<Button-1>", click)
message_entry.focus_set()
root.mainloop()
Add this line after message_entry.delete(1.0, tk.END)
:
message_entry.update()