python - 让 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]'。当我按下向上键时,代理会向右移动。在我纠正错误之后,它就再也不动了。但那条线不可能真的是它不起作用的原因,不是吗?有谁知道为什么它最初有效,但突然不再有效?
解决方案
推荐阅读
- java - 尝试使用 Spring 编译时包不存在
- php - 运行安装部分 beanbooks 时出现 PHP/kohana 错误
- java - 通过 Twitter API 发布回复时获取无法验证 32
- ios - CORDOVA IOS - 我构建时被拒绝的错误承诺
- git - 当人们对 git 说“祖先”时,他们是什么意思?
- php - 使用插入查询 CI PHP Mysql Ajax
- c - BST后序遍历中的打印深度
- ubuntu - ffmpeg 循环不工作在第一次循环后不断丢帧
- python-3.x - 如何在 Python 3x 中将字符串列表转换为整数列表
- keras - Keras 中 LSTM 的不同 time_step 输入