【问题标题】:binding keyboard events tkinter绑定键盘事件 tkinter
【发布时间】:2018-03-11 17:14:59
【问题描述】:

在 python 方面还是很新的,我正在学习 tkinter。 我想对某些功能使用键盘事件而不是鼠标事件。 然而,键盘事件不起作用,尽管鼠标事件起作用。 这是一个非常简单的例子,说明什么不起作用。用鼠标使用按钮 1 并按下键盘上的 key 'z 应该做同样的事情,但键盘什么也不做。我试图阅读 tkinter 文档,但没有找到答案。

感谢您的帮助

from tkinter import *

class Pipi(Frame):
    def __init__(self,master=None):
        Frame.__init__(self,width=400,height=400,bg='red')
        self.pack()

        self.bind("<z>",self.do)
        self.bind("<Button-1>", self.do)


    def do(self,event):
        print('la vie est belle')



root=Tk()
Pipi(root)
root.mainloop()

【问题讨论】:

    标签: python-3.x tkinter binding


    【解决方案1】:

    这是由于 Frame 小部件没有焦点。使用鼠标事件,它的工作方式似乎有所不同。可能有几种解决方法:

    1. 在事件发生之前抓住焦点
    2. 绑定到其他东西

    要实现第一个,只需添加:

        self.focus_set()
    

    __init__ 内部某处。


    要实现第二个,替换:

    self.bind("<z>",self.do)
    

    与:

    self.master.bind('<z>', self.do)
    

    【讨论】:

    • 非常感谢,完美运行。我想当时是主小部件的焦点。
    • @ericparis 看起来是这样,但如果有人能证实我会很高兴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多