首页 > 解决方案 > 让 Tkinter 处理箭头键输入

问题描述

(我现在大大简化了我的代码,所以你也应该能够运行它。)就像我在这个问题的前一个版本中所说的那样,我试图让 tkinter 处理箭头键击。以下代码生成一个 $-符号网格,中间有一个 I(代理)。它现在应该做的就是,在按下向上键时,将代理向上移动并收集一个 $ 符号。'''

将 tkinter 导入为 tk

类游戏:

def __init__(self):
    self.history=[] #Will contain the move history. Each element is a quadruple consisting of the state,action,reinforcement,new state.
    
    self.root=tk.Tk()
    for i in range(27):
        for j in range(27):
                tk.Label(self.root,text='$',height=1,width=3).grid(row=i,column=j)
    self.I=[14,14]
    tk.Label(self.root,text='I',height=1,width=3).grid(row=14,column=14)
    self.root.bind('<KeyPress>',self.onKeyPress)
    self.root.mainloop()

def onKeyPress(self,event):
    if event.keysym in ['Up','Right','Down','Left']:
        if event.keysym=='Up':
            tk.Label(self.root,text='',height=1,width=3).grid(row=self.I[0],column=self.I[1])
            tk.Label(self.root,text='I',height=1,width=3).grid(row=self.I[0]+1,column=self.I[1])
            self.I[0]+=1

'''

它仍然不起作用,又发生了一些非常奇怪的事情:首先,我不小心有 'row=self.I[0],column=self.I[1]+1' 而不是 'row=self.I[0 ]+1,column=self.I[1]'。当我按下向上键时,代理会向右移动。在我纠正错误之后,它就再也不动了。但那条线不可能真的是它不起作用的原因,不是吗?有谁知道为什么它最初有效,但突然不再有效?

标签: pythonmachine-learningtkinterkeyboard-events

解决方案


推荐阅读