擅长:python、mysql、java
<p>试试这个:</p>
<pre class="lang-py prettyprint-override"><code>from tkinter import *
window = Tk()
# window.state("zoomed")
window.configure(bg="white")
def drag(event):
x = event.x + event.widget.winfo_x()
y = event.y + event.widget.winfo_y()
event.widget.place(x=x, y=y, anchor="center")
card = Canvas(window, width=10, height=10, bg="blue")
card.place(x=50, y=50, anchor="center")
card.bind("<B1-Motion>", drag)
another_card = Canvas(window, width=10, height=10, bg="red")
another_card.place(x=100, y=50, anchor="center")
another_card.bind("<B1-Motion>", drag)
window.mainloop()
</code></pre>
<p><code>event.x</code>根据小部件给出光标的x位置</p>
<p><code>event.widget.winfo_x()</code>根据窗口给出小部件的x位置</p>
<p>顺便说一句,如果将这两个小部件都移动到画布中,会简单得多,但它仍然可以工作</p>