python tkinter 如何将键绑定到按钮 [英] python tkinter how to bind key to a button
问题描述
编程新手,尤其是 Python 和 tKinter.如何创建将键s"绑定到按钮或函数 sharpen
的方法?任何帮助都是极好的.
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)
推荐答案
您需要进行两项更改:
添加
master.bind('s', self.sharpen)
到__init__
.(绑定到框架,self
,似乎不起作用.)
to __init__
. (Binding to the Frame, self
, does not seem to work.)
当按下 s 时,将调用 self.sharpen(event)
.自从Tkinter 将发送一个 Tkinter.Event
对象,我们还必须更改调用签名
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):
因此,当按钮被按下时,event
将被设置为默认值value,None
,但是当按下 s 键时,event
将分配给 Tkinter.Event
对象.
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.
这篇关于python tkinter 如何将键绑定到按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!