با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت keyboard
دوستان bind هم برای ایونت ها کاربرد داره ما میتونیم با بایند هر ایونتی رو روی هر ابزاری تعریف کنیم اگر یادتون باشه کال بک فقط برای فشردن کلید ها یا به عبارت دیگه یک بار کلیک کردن روی اونها بکار میرفت ولی bind دست ما رو خیلی بازتر میذاره اینجا توی این درس من تمرکز دارم روی کلید هایی که از کیبورد میشه فشرد و درس بعد در مورد موس صحبت میکنم خب با یه مثال شروع میکنم
#********************CODE***********************

from tkinter import *
from tkinter import ttk

root=Tk()
root.geometry('640x480+200+200')
def key_press(event):
    print('type {}'.format(event.type))
    print('widget {}'.format(event.widget))
    print('char {}'.format(event.char))
    print('keysym {}'.format(event.keysym))

root.bind('<KeyPress>',key_press)

root.mainloop()
#***********************************************
خب
root.bind('<KeyPress>',key_press)
خط بالا رو ببینید بایند رو روی هر ابزاری نیاز داشته باشیم با یه دات بعد اون ابزار تعریفش میکنیم که اینجا روی پنجره ی اصلیمونه اولین ورودی '<keypress>' هست یعنی فشرده شدن یک کلید یه چیزیم داریم که دقیقا مثل همین استفاده میشه برای رها کردن کلیده '<keyrelease>' دیگه برای اون مثال نمیزنم خودتون تست کنید و دومی ورودی تابع بایندمون نام تابعی هست که میخوایم اجرا کنیم فقط دقت کنید که اینجا تابعمون باید یک ورودی به نام event داشته باشه و توی تابع key_press من از انواع چیز هایی که event داره استفاده کردم که میتونید بخونیدشون و ازشون استفاده کنید به ایونت های زیر دقت کنید
<key> , <keypress>
هردوشون برای فشرده شدن کلید هستند و برای همه ی کلید ها کاربرد دارند 
<keypress-Delete>
برای استفاده از کلید خاص باید به صورت بالا عمل کنید کیپریس نوشته شده و با یک دش ( - ) keysym دکمه ی مورد نظرمون نوشته شده و اگر فقط keysym رو هم بنویسیم درست عمل میکنه برای keyrelease هم میشه همینطور عمل کرد برای کلید اینتر از <Return> استفاده میکنیم میتویند کلید ترکیبی هم بسازید به صورت زیر
<Control-Alt-Next>
الان کنترل و الت و page down رو با هم استفاده کردم اگر کسی اینها رو با هم بزنه تابعم اجرا میشه کد زیر رو ببینید تا توضیح بدم
#********************CODE***********************
from tkinter import *
from tkinter import ttk

root=Tk()
root.geometry('640x480+200+200')
def shortcut(action):
    print(action)

root.bind('<Control-v>',lambda e: shortcut('Paste'))
root.bind('<Control-c>',lambda e: shortcut('Copy'))

root.mainloop()
#***********************************************
حتما lambda رو یادتونه حالا اینجا ببینید جلوی این کلمه یک e گذاشتم چون اینجا یک ایونت برمیگرده و باید جایی ذخیره بشه برای همین این کار رو کردم اگر این کار رو نکنید ارور میده
خدا یار و نگهدارتون