<p>抱歉,我把这个话题挖出来了,但是在一个用户对另一个话题做了一个有趣的回答之后,我想我会改进这个问题的答案。实际上,只要命令返回一个函数,就可以将带有参数的函数赋给它。在这种情况下,它将避免您很多麻烦,因为您不需要为每个左、右、下等写一个新函数</p>
<p>如您所见,我可以将参数用于分配给命令的函数:</p>
<pre><code>command=move1(0,10)
</code></pre>
<p>我只为一个椭圆写了代码,只是为了展示它是如何工作的。你知道吗</p>
<pre><code>from tkinter import *
x1, y1 = 135, 135
x2, y2 = 170, 170
def move1 (x, y):
def moveo1 ():
global x1, y1
x1, y1 = x1+x, y1+y
can.coords (oval1, x1, y1, x1+30, y1+30)
return moveo1
##########MAIN############
wind = Tk()
wind.title ("Move Da Ball")
can = Canvas (wind, width = 300, height = 300, bg = "light blue")
can.pack (side = LEFT,padx = 5, pady = 5)
oval1 = can.create_oval(x1,y1,x1+30,y1+30,width=2,fill='orange') #Planet 1
Button(wind, text = 'Left', command=move1(-10,0)).pack(padx = 5, pady = 5)
Button(wind, text = 'Right', command=move1(10,0)).pack(padx = 5, pady = 5)
Button(wind, text = 'Top', command=move1(0,-10)).pack(padx = 5, pady = 5)
Button(wind, text = 'Bottom', command=move1(0,10)).pack(padx = 5, pady = 5)
Button(wind, text = 'Quit', command=wind.destroy).pack(padx = 5, pady = 5)
wind.mainloop()
</code></pre>