2014-12-11 2 views
0

Tkinter에서 for 루프를 사용하여 격자를 생성했지만 클릭 할 때마다 함수를 바인딩 할 수있는 방법을 알고 싶습니다. 개별 생성 된 사각형, 사각형이 색을 변경합니다.파이썬 (Tkinter) - 캔버스 for 루프 색상 변경

from Tkinter import * 

master = Tk() 

def rowgen(row, col): 
    for i in range(row): 
     for j in range(col): 
      w.create_rectangle(25+50*i, 25+50*j, 50+50*i, 50+50*j, fill="green") 

w = Canvas(master, width=225, height=225) 
w.pack() 
rowgen(4, 4) 


master.resizable(0,0) 
mainloop() 

나는 처음에는이 좌표 내에서 클릭하면, 나는 사각형 중 하나의 색상을 재구성 줄 이벤트를 만들기 위해 서로에 대한 루프를 반복 할 필요가 있다고 생각 해요.

+1

다음 링크는 클릭 등록 방법에 대한 자습서입니다. Is는 텍스트를 사용하지만 사각형을 대체하며 같은 방식으로 작동합니다. http://www.java2s.com/Tutorial/Python/0360__Tkinker/Canvasclickevent.htm –

답변

0

Curly Joe의 힌트를 따르고 실수를하면 다음 태그가 하나만 필요합니다. 먼저 직접 시도해보십시오.

from tkinter import * 

master = Tk() 

def box_click(event): 
    box = event.widget.find_closest(event.x, event.y) 
    print(box) # remove later 
    w.itemconfig(box, fill='red') 

def rowgen(row, col): 
    for i in range(row): 
     for j in range(col): 
      w.create_rectangle(25+50*i, 25+50*j, 50+50*i, 50+50*j, 
           fill="green", tag='BOX') 

w = Canvas(master, width=225, height=225) 
w.pack() 
rowgen(4, 4) 
w.tag_bind('BOX', '<Button-1>', box_click) 

master.resizable(0,0) 
mainloop()