当前位置: 首页 > 面试题库 >

python tkinter如何将键绑定到按钮

陆文斌
2023-03-14
问题内容

编程新手,尤其是python和tKinter。如何创建将键“s”绑定到按钮或功能的方法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__。(绑定到Frameself似乎无效。)

  1. s按下时,self.sharpen(event)会被调用。由于Tkinter将发送Tkinter.Event对象,因此我们还必须将呼叫签名更改为
    def sharpen(self, event=None):
    

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



 类似资料:
  • 按键绑定 你可以激活keyBindings选项来支持键盘控制。默认情况下iScroll监听方向键,上下翻页建,home/end键,但这些按键绑定完全可以自定义。 你可以通过传递一个包含按键代码列表的对象来进行按键绑定。 默认的按键值如下: keyBindings: { pageUp: 33, pageDown: 34, end: 35, home: 36,

  • 问题内容: 以下代码在MS Windows中正常工作(按时脚本将退出): 我试图在“无窗口管理器”的Debian环境中运行它(引导至控制台,运行,它通过(那里唯一的命令)启动脚本)。 该脚本按预期方式启动,但按任何操作均不执行任何操作(我原本希望关闭并返回至文本控制台)。后来我尝试添加,以防万一,但这并没有帮助。 MS Windows和Debian环境之间这种不同行为的原因可能是什么? 问题答案:

  • Keygrabber keygrabber 的工作方式和 bbkeys(也是一个非常棒的工具, 但功能上有其局限性,过去采用了不兼容的许可证)非常相似,但配置文件采用了全新的语法,所具有 的一些新功能甚至让 Fluxbox 变得更加强大。 其中之一就是,新的 keygrabber 支持类似于 emacs 中的 keychains... 也就是说您可以用:Mod1 + M + Mod1 + F 切换

  • 问题内容: 我有一个JList和ArrayList。如何将arraylist中的数据绑定到jlist.Ares有替代方法吗? 如何绑定以上代码。现在代码给出错误。 问题答案: 您无需克隆ArrayList。只需调用toArray()

  • 问题内容: 所以我有Button_1,当单击时,它将使用ajax请求一个新的button_2。两个按钮在我的jquery(document).ready上都有click事件,但是当按钮2添加到页面时,它没有jquery事件。那可能吗? 这是我的页面加载代码: 问题答案: 您必须在 DOM 上创建事件。 REF: http : //api.jquery.com/on/

  • 问题内容: 我需要设计一个有两个玩家的游戏。每个人都有一个球,应该能够左右移动球,第一个球员带有’a’‘d’按钮,第二个球员带有右,左箭头按钮。但是,当前一名球员需要等待另一名球员的动作完成才能移动自己的球。我该如何解决这个问题?这是我的代码的相关部分: 问题答案: 您需要使用一系列标志和某种“更新”循环来根据标志的状态来更新游戏的状态… 例如,首先创建一系列标志… 这些可以由单个播放器对象轻松维