擅长:python、mysql、java
<p>如果希望小部件接收事件,则需要使用<code>.focus_force()</code>方法来聚焦tkinter画布,因为只有聚焦的小部件才能接收事件。另外,当您的keypress处理程序被调用时,它传递一个包含事件数据的参数,因此您需要向<code>moveRight</code>添加一个参数,否则您将得到一个<code>TypeError</code>。在</p>
<pre><code>from Tkinter import *
class GUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.setupStuff()
self.canvas.focus_force() #force the canvas to take focus
def setupStuff(self):
self.canvas = Canvas(self, height=500, width=600)
self.canvas.pack()
self.blueCircle = self.canvas.create_oval(10, 10, 40, 40, fill='dodger blue')
self.canvas.bind('<Return>', self.moveRight)
def moveRight(self, eventData): #.bind passes an argument
self.canvas.move(self.blueCircle, 1, 0)
if __name__ == '__main__':
window = GUI(Tk())
window.mainloop()
</code></pre>