python - 如何通过 tkinter 绑定传递更多参数
问题描述
如何通过 tkinter 的 bind 方法传递更多参数?
例如:
tk = Tk()
def moveShip(event,key):
if event.keysym == 'Down' and player1.selectedCoord[1] != 9:
if key == 'place':
player1.selectedCoord[1] += 1
elif event.keysym == 'Up' and player1.selectedCoord[1] != 0:
if key == 'place':
player1.selectedCoord[1] -= 1
elif event.keysym == 'Left' and player1.selectedCoord[0] != 0:
if key == 'place':
player1.selectedCoord[0] -= 1
elif event.keysym == 'Right' and player1.selectedCoord[0] != 9:
if key == 'place':
player1.selectedCoord[0] += 1
tk.bind("<Key>", command=moveShip(event,'place'))
代替
tk.bind("<Key>", moveship)
当我运行第一个时,它说事件未定义
解决方案
您始终可以将回调函数包装在 lambda 中。
tk.bind('<Key>', lambda event: moveShip(event, 'place'))
另一个选项是使用partial
fromfunctool
创建一个默认值key
已经设置的函数。
from functools import partial
moveShip_place = partial(moveShip, key='place')
tk.bind('<Key>', moveShip_place)
推荐阅读
- python - 如何使用 Music21 检索钢琴曲的左右手
- javascript - 在表格上动态附加按钮时,无法添加onclick确认事件
- android - 如何在 TextInput 上打开没有键盘 onLongPress 的上下文菜单(React Native)
- javascript - 在敲除数组中搜索重复条目
- angular - 哪个组件是正确的
- keras - 当我打乱我的数据时,keras 的 fit 和 fit_generator 仍然不同
- android - 如果方向改变,我如何改变可绘制的半径?
- python - Tensorflow 对象检测 API AvgNumGroundtruthBoxesPerImage 始终为零(未显示地面实况标签)
- mongodb - 使用 mongodb 查询访问 [{ }] 内的字段
- php - 如何在 laravel 5.0 中测试上传文件?