This code is an attempt to bind a command to a frame, ie. when the “Escape” key is pressed, the window should be destroyed.
from tkinter import * from tkinter import ttk root=Tk() root.geometry("400x400") frame1=ttk.Frame(root) frame1.pack() def Exit(event): root.destroy() frame1.bind("<Escape>", Exit) root.mainloop()
if frame1.bind()
is replaced by root.bind()
, the code works as I would expect it to. Why doesn’t what I’ve written above work?
Advertisement
Answer
The bind works, but the event will only trigger if the frame has focus, and by default a frame does not have the keyboard focus.
Try setting the focus with frame1.focus_set()