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()