【发布时间】:2020-11-21 15:55:09
【问题描述】:
我试图通过给画布一个回调来查看窗口坐标和画布坐标之间的区别,该回调会在两种类型中打印鼠标单击的坐标。我希望这两种类型的坐标具有不同的值,但事实并非如此。另外,我尝试将窗口坐标传递给find_closest 方法,正如documentation 中所述,该方法接受画布坐标,并且没有错误。
import tkinter as tk
def callback(event):
canvas = event.widget
print()
print("Window x-coordinate:", event.x)
print("Window y-coordinate:", event.y)
x = canvas.canvasx(event.x)
y = canvas.canvasy(event.y)
print("Canvas x-coordinate:", x)
print("Canvas y-coordinate:", y)
print("closest:", canvas.find_closest(x, y))
master = tk.Tk()
frame = tk.Frame(master, width=50, height=50, bd=5, bg="green", relief="groove")
frame.pack_propagate(0)
frame.pack()
button = tk.Button(frame)
button.pack(fill="none")
canvas = tk.Canvas(master, bd=5, width=50, height=50, bg="red", relief="ridge")
canvas.bind("<Button-1>", callback)
canvas.pack_propagate(0)
canvas.pack()
master.mainloop()
【问题讨论】: