Привет, У меня есть очень специфическая проблема с кодом. Мне понадобятся свежая пара глаз. Я пытаюсь создать графический интерфейс для игры Othello, которую я запрограммировал. Я только что начал и сделал зеленые плитки, в которых я буду играть. Чтобы увидеть, что все работает, я сделал простую функцию, которая вызывается каждый раз, когда клик по одному из фрагментов. Затем функция должна распечатать координаты плитки, которую я только что нажал на консоль. Однако он делает то, что он печатает [7, 7]
. Это, конечно, координаты самой последней плитки. Во всяком случае, я не знаю, что я делаю неправильно, но я предполагаю, что я не совсем понимаю функцию .bind()
, спасибо за любую помощь.Tkinter: Холсты, привязанные к событиям
Код:
from tkinter import *
def print_cors(event, cors):
print(cors)
class GridFrame:
def __init__(self, master):
board = Frame(master, height=500, width=800, bg="brown")
board.grid()
self.column_frame_list = [None]*8
for x in range(0, len(self.column_frame_list)):
self.column_frame_list[x] = [None]*8
for y in range(0, len(self.column_frame_list[x])):
self.column_frame_list[x][y] = Canvas(board, height=55, width=55, bg="green", bd=0, highlightthickness=0, relief='ridge')
self.column_frame_list[x][y].bind("<Button-1>", lambda event: print_cors(event, [x,y]))
self.column_frame_list[x][y].grid(row=y, column=x)
root = Tk()
root.wm_title("Reversi")
grid_frame = GridFrame(root)
root.mainloop()
http://stackoverflow.com/questions/17677649/tkinter-assign-button-command-in-loop-with-lambda –