擅长:python、mysql、java
<p>为了补充说明,您是否注意到您的拖动量等于窗口在屏幕上的位置?如果窗口最大化,那么代码就非常接近了。如果缩小窗口的大小并从左上角移得更远,则三角洲会变得更糟。这是因为<code>event.x_root</code>和<code>event.y_root</code>是绝对坐标,从屏幕左上角开始,但是<code>place</code>的参数是相对于窗口左上角的。你总是需要意识到你的坐标是相对于什么的</p>
<p>我得出了以下结论,但并不比TheLizzard的答案好多少</p>
<pre><code>from tkinter import *
window = Tk()
window.state('zoomed')
window.configure(bg = 'white')
def drag(event):
new_x = event.x_root - window.winfo_rootx()
new_y = event.y_root - window.winfo_rooty()
event.widget.place(x=new_x, y=new_y,anchor=CENTER)
card = Canvas(window, width=10, height=10, bg='blue2')
card.place(x=300, y=600,anchor=CENTER)
card.bind("<B1-Motion>", drag)
another_card = Canvas(window, width=10, height=10, bg='red3')
another_card.place(x=600, y=600,anchor=CENTER)
another_card.bind("<B1-Motion>", drag)
window.mainloop()
</code></pre>