python tkinter how to bind key to a button

python, python-2.7, python-imaging-library, tkinter

Solution

You'll need to make two changes:

Add

master.bind('s', self.sharpen)

to `__init__`. (Binding to the Frame, `self`, does not seem to work.)

When s is pressed, `self.sharpen(event)` will be called. Since Tkinter will be sending a `Tkinter.Event` object, we must also change the call signature to

def sharpen(self, event=None):

Thus, when the button is pressed, `event` will be set to the default value, `None`, but when the s key is pressed, `event` will be assigned to the `Tkinter.Event` object.

Problem

New to programming and especially python and tKinter. How can I create a way to bind the key "s" to the button or the function `sharpen`? Any help would be awesome. ``` from Tkinter import * from PIL import Image, ImageTk, ImageFilter, ImageEnhance class Application(Frame): def __init__(self, master=None): Frame.__init__(self, master) master.wm_title("Image examples") self.pack() self.createWidgets() def createWidgets(self): self.img = Image.open("lineage.jpg") self.photo1 = ImageTk.PhotoImage(self.img.convert("RGB")) self.label1 = Label(self, image=self.photo1) self.label1.grid(row=0, column=0, padx=5, pady=5, rowspan=10) self.photo2 = ImageTk.PhotoImage(self.img.convert("RGB")) self.label2 = Label(self, image=self.photo2) self.label2.grid(row=0, column=1, padx=5, pady=5, rowspan=10) button5 = Button(self, text="Sharpen", command=self.sharpen) button5.grid(row=4, column= 2, sticky = N) def sharpen(self): img2 = self.img.filter(ImageFilter.SHARPEN) self.photo2 = ImageTk.PhotoImage(img2) self.label2 = Label(self, image=self.photo2) self.label2.grid(row=0, column=1, padx=5, pady=5, rowspan=10) ```

Original source