python tkinter canvas move绑定key press事件同时传递参数
时间: 2023-07-15 18:13:35 浏览: 99
可以使用lambda函数来绑定key press事件,并且将参数传递给函数。下面是一个示例代码:
```python
from tkinter import *
root = Tk()
canvas = Canvas(root, width=300, height=300)
canvas.pack()
def move_object(event, object_id):
# 移动对象
if event.keysym == 'Up':
canvas.move(object_id, 0, -5)
elif event.keysym == 'Down':
canvas.move(object_id, 0, 5)
elif event.keysym == 'Left':
canvas.move(object_id, -5, 0)
elif event.keysym == 'Right':
canvas.move(object_id, 5, 0)
# 创建一个矩形对象
rect = canvas.create_rectangle(100, 100, 200, 200, fill='red')
# 绑定 key press 事件,并传递参数
canvas.bind('<KeyPress>', lambda event: move_object(event, rect))
canvas.focus_set()
root.mainloop()
```
在上面的示例代码中,我们创建了一个矩形对象,并将其 ID 传递给 `move_object` 函数,在 `lambda` 函数中使用 `event` 参数绑定 key press 事件,并将 `rect` 参数传递给 `move_object` 函数。在 `move_object` 函数中,我们根据键盘按键的不同来移动对象。
阅读全文