【发布时间】:2016-01-07 14:47:38
【问题描述】:
我想通过输入的键在我的棋盘上(在第十五场游戏中)交换棋子。它非常适用于上/下/右/左,但不适用于数字键 1...9,即使它们的坐标在我的 play() 函数中正确更新,它似乎仍然没有在板上移动。我的完整代码是:http://pastebin.com/KvL2JF1G任何提示??
这是我的关键事件:
def key(event):
if event.char.isdigit():
for j, row in enumerate(board):
for i, char in enumerate(row):
if char.get() == event.char:
print "pressed", repr(event.char),i, j
play(i,j)
现在主要部分在 play() 中,它改变了每个标签中与空标签交换的 string_vars(blankx,y 是空白空间的坐标):
def play(i,j):
global blankx, blanky, game_running
if game_running:
# update vars if tile can be moved
if (blankx, blanky) in [(i+1,j),(i-1,j),(i,j+1),(i,j-1)]:
board[blanky][blankx].set(board[j][i].get())
board[j][i].set(' ')
blanky = j
blankx = i
这适用于所有可视化和事件:
for j, row in enumerate(board):
for i, string_var in enumerate(row):
b = Label(frame, textvariable=string_var, bg='pink', width=2, height=1, font=("Times", 30, 'bold'), relief=RAISED)
b.grid(row=j, column=i, sticky="nsew", ipadx=8, padx=4, pady=4)
b.bind('<Button-1>',lambda e, i=i,j=j:play(i,j))
b.bind('<Key>', key)
b.bind('<Right>', right_Key)
# ... same function for left/up/down
b.focus_set()
【问题讨论】:
标签: python user-interface button tkinter visualization