2012-07-03 14 views
6

Tôi có khung vẽ Tkinter với thanh cuộn và một số mục khi tôi nhấp vào chúng, nó phải trả về tọa độ. (Sử dụng Python.)Python, Tkinter: Cách lấy tọa độ trên canvas cuộn

Điều này làm việc tốt với các đối tượng ban đầu có thể nhìn thấy trong cửa sổ. Khi tôi di chuyển xuống, tuy nhiên, và các mục tiếp tục xuống trên vải đi vào xem, tôi không nhận được tọa độ vải của họ khi nhấp vào, nhưng các tọa độ cửa sổ.

Tôi không thể tìm thấy thông tin về cách để có được tọa độ tuyệt đối, vì vậy tôi tự hỏi nếu có ai ở đây biết làm thế nào để làm điều đó?

Cảm ơn.

Trả lời

6

Xem tài liệu về tiện ích canvas here.

Để chuyển đổi từ tọa độ cửa sổ sang tọa độ canvas, hãy sử dụng phương thức canvasxcanvasy.

Đây là một hàm gọi lại ví dụ chuyển đổi tọa độ x và y của cửa sổ và in mục gần nhất với vị trí đó qua find_closest()method.

def callback(event): 
    canvas = event.widget 
    x = canvas.canvasx(event.x) 
    y = canvas.canvasy(event.y) 
    print canvas.find_closest(x, y) 
+0

Cảm ơn bạn rất nhiều! – Yngve

+0

Rất vui được! – gary

+0

Nếu hình ảnh nhỏ hơn canvas, thì phương thức trên sẽ cho tôi tọa độ canvas tuyệt đối chứ không phải tọa độ của hình ảnh. Có cách nào tôi có thể có được hình ảnh nhỏ hơn để lấp đầy khung hình hoặc thay đổi kích thước khung hình để hiển thị hình ảnh mà không có bất kỳ đường viền nào không? – varagrawal