Eventos acionados por teclas e outros "bindings":
Janelas de mensagem e painel de abrir arquivos ("dialogs"):
import tkinter as tk
from tkinter.colorchooser import askcolor                  
from tkinter import filedialog as fd 
def picker_callback():
    result = askcolor(
        color="#6A9662", 
        title="Color Picker"
    ) 
    print(result)
def open_callback():
    name= fd.askopenfilename(title="Escolha um arquivo")
    print(name)
def quit_procedure():
    print('Tratar encerramento aqui')
    root.destroy() # sem isto agora não fecha a janela!
root = tk.Tk()
root.wm_protocol ("WM_DELETE_WINDOW", quit_procedure) # captura o fechamento com X da janela
tk.Button(
    root, 
    text='Choose Color', 
    fg="darkgreen", 
    command=picker_callback
).pack(side=tk.LEFT, padx=10)
tk.Button(
    text='File Open', 
    command=open_callback
).pack(fill=tk.X)
tk.Button(
    text='Quit', 
    command=quit_procedure,  # no exemplo original era command=root.quit,
    fg="red"
).pack(side=tk.LEFT, padx=10)
tk.mainloop()
# about quit/destroy:
# https://bytes.com/topic/python/answers/390009-quitting-tkinter-application-confirmation
# -> https://stackoverflow.com/questions/4643007/intercept-tkinter-exit-command