python tkinter 如何将键绑定(bind)到按钮

标签 python python-2.7 tkinter python-imaging-library

编程新手,尤其是 python 和 tKinter。如何创建一种方法将键“s”绑定(bind)到按钮或函数 ​​sharpen?任何帮助都是极好的。

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)

最佳答案

您需要进行两项更改:

  1. 添加

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

    __init__。 (绑定(bind)到框架,self,似乎不起作用。)

  2. s 被按下时,self.sharpen(event) 将被调用。自从 Tkinter 将发送一个 Tkinter.Event 对象,我们还必须更改调用 签名给

    def sharpen(self, event=None):
    

    因此,当按下按钮时,event 将被设置为默认值 值,,但是当按下 s 键时,事件 将分配给 Tkinter.Event 对象。

关于python tkinter 如何将键绑定(bind)到按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326940/

相关文章:

python - 如何将嵌套 JSON 键规范化为 pandas 数据帧

python - Django: IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录

python - 使用 tkinter 在 python 上显示/更新分数

python - 为 Tkinter Scale 小部件设置 `orient` 关键字参数会导致 NameError : name 'HORIZONTAL' is not defined

events - 在 tkinter 中连续调用 <Configure> 事件

python - 更新了 Google App Engine,现在出现错误 TypeError : 'NoneType' object is unsubscriptable

python - 由 zeromq 触发的 nginx 背后的 Websockets?

python - 向 IBM Watson Speech to Text 服务发出异步 Python HTTP post 请求

python - 导入结果不一致

python - 点前多于 1 位的类科学符号