2017-10-23 17 views
1

저는 Tkinter/Python의 Canva 클래스 'coord() 메소드를 사용하여 직사각형을 움직입니다. 그것이 효과를 내기 위해서는 무엇을해야합니까?Tkinter/Python을 사용하여 사각형을 마우스 위치로 이동하는 방법은 무엇입니까?

from tkinter import * 

root = Tk() 

def key(event): 
    print ("pressed", repr(event.char)) 

def callback(event): 
    position = (event.x,event.y) 
    event.widget.coords(item, position) 

canvas= Canvas(root, width=100, height=100) 
canvas.bind("<Key>", key) 
canvas.bind("<Button-1>", callback) 
item = canvas.create_rectangle(10,10,5,5) 
canvas.pack() 

답변

0

이것은 첫 번째 게시물입니다. SO에 오신 것을 환영합니다 : D

업데이트 답변 : 일부 연구 및 테스트를 마친 후 튜플없이 좌표를 전달해야하는 것 같습니다. 튜플에 x와 y를 저장하는 것은 문제이지만 x2와 y2에 대한 값도 제공하지 않습니다. 당신은 TK에 표시된 항목을 이동할 수 없습니다
:

def callback(event): 
    event.widget.coords(item, event.x + 5, event.y + 5, event.x, event.y) 

당신은 더 here

원래 잘못된 답을 배울 수 있습니다. 캔버스를 지우고 새 좌표로 항목을 만들려고 시도했을 수 있습니다.

canvas.delete("all") 
canvas.create_rectangle(event.x + 5,event.y + 5, position) 
+2

올바르지 않습니다. 캔버스 객체를 x 및/또는 y 방향으로 이동시키는 'move'메서드와 'coords'메서드를 사용하여 새로운 좌표 세트를 제공합니다. –

+0

당신은 완전히 옳습니다. 나는 대답을 업데이트했다. 나는 전에 캔버스를 사용한 적이 없으며 오늘 새로운 것을 배웠습니다. 고맙습니다. – Saelyth