python中的按键跟踪

python中的按键跟踪,python,tkinter,Python,Tkinter,我有这段代码,应该在按下相应的按钮时运行,但什么也没发生。为什么会这样 def keyReleased(self,event): if event.keysym == 'Right': self.move('Right') elif event.keysym == 'Left': direction= self.move('Left') elif event.keysym == 'Up': self.move('Up')

我有这段代码,应该在按下相应的按钮时运行,但什么也没发生。为什么会这样

def keyReleased(self,event):
    if event.keysym == 'Right':
        self.move('Right')
    elif event.keysym == 'Left':
      direction=  self.move('Left')
    elif event.keysym == 'Up':
        self.move('Up')
    elif event.keysym =='Down':
        self.move('Down')
    elif event.keysym =='Escape':
        self._root.destroy()

您应该将键事件绑定到回调

例如:

from Tkinter import * # Python 3.x: from tkinter import *

def hello(e=None):
    print('Hello')

root = Tk()
Button(root, text='say hello', command=hello).pack()
root.bind('<Escape>', lambda e: root.quit())
root.bind('h', hello)
root.mainloop()
来自Tkinter导入*#Python 3.x:来自Tkinter导入*
def你好(e=None):
打印('你好')
root=Tk()
按钮(root,text='say hello',command=hello).pack()
root.bind(“”,lambda e:root.quit())
root.bind('h',hello)
root.mainloop()

bind\u all是一种方法。请注意,箭头键属于下面代码的“特殊键”类别

    try:
        import Tkinter as tk     ## Python 2.x
    except ImportError:   
        import tkinter as tk     ## Python 3.x

    def key_in(event):
        ##shows key or tk code for the key
        if event.keysym == 'Escape':
            root.quit()
        if event.char == event.keysym:
            # normal number and letter characters
            print'Normal Key', event.char
        elif len(event.char) == 1:
            # charcters like []/.,><#$ also Return and ctrl/key
            print( 'Punctuation Key %r (%r)' % (event.keysym, event.char) )
        else:
            # f1 to f12, shift keys, caps lock, Home, End, Delete ...
            print( 'Special Key %r' % event.keysym )

    root = tk.Tk()
    tk.Label(root, text="Press a key (Escape key to exit):" ).grid()

    ent=tk.Entry(root)
    ent.bind_all('<Key>', key_in)  # <==================
    ent.focus_set()

    root.mainloop()
试试看:
将Tkinter作为tk##Python 2.x导入
除恐怖外:
将tkinter作为tk##Python 3.x导入
def钥匙插入(事件):
##显示钥匙或钥匙的tk代码
如果event.keysym=='Escape':
root.quit()
如果event.char==event.keysym:
#普通数字和字母字符
打印“普通键”,event.char
elif len(event.char)==1:

#像[]/,>不,我不知道你必须这么做,所以我应该做一些像
root.bind('Right',self.keyreased)
?运行的代码目前不工作,因为我仍在努力解决这个问题。但是这些按钮通常不会运行下面的代码。简短的旁注:Python3.x中的一个变化是导入是小写的:
fromtkinterimport*
    def arrow_down(event):
        print "arrow down"

    def arrow_up(event):
        print "arrow up"

    root = tk.Tk()
    tk.Label(root, text="Press a key (Escape key to exit):" ).grid()

    root.bind('<Down>', arrow_down)
    root.bind('<Up>', arrow_up)

    root.mainloop()