In reference to In tkinter GUI what are pending events and idle callbacks? question, which asks what are pending events and idle callbacks in tkinter, I was wondering if there is a way to print the event/idle queue to console or a tracelog.
The only potential solution I could come up with is the code below, but I was wondering if there was an easier way.
import tkinter as tk
root = tk.Tk()
# Some widgets
for foo in range(5):
tk.Button(root, text="Press Me!").pack()
# Bind all widgets to print events
widgets = root.winfo_children()
def event_print(event):
print(event)
events = [
"<Button>",
"<Motion>",
"<ButtonRelease>",
"<Double-Button>",
"<Enter>",
"<Leave>",
"<FocusIn>",
"<FocusOut>",
"<Return>",
"<Key>",
"<Shift-Up>",
"<Configure>",
]
for widget in widgets:
for event in events:
widget.bind(event, event_print)
root.mainloop()
Advertisement
Answer
I was wondering if there is a way to print the event/idle queue to console or a tracelog.
No, there is not. At least, not without writing your own code in C that hooks into the underlying tcl interpreter.
The solution you propose in your question wouldn’t work 100% either. There are many events that get added to the queue by the tk library itself.