我正在用tkinter编写一个简单的3D模拟器,我遇到了通过绑定到事件的函数传递参数的问题。
我的功能是
def left(event):
cam1 = 0
cam2 = 0
def render( cam1, cam2):
w.delete("all")
cam1 = cam1 + 5
cam2 = cam2 + 2
lol = 0
w.create_rectangle(10+cam1,10+cam1,190+cam1,190+cam1)
w.create_rectangle(40+cam2,40+cam2,160+cam2,160+cam2)
w.create_line(10+cam1,10+cam1,40+cam2,40+cam2)
w.create_line(40+cam2,160+cam2,10+cam1,190+cam1)
w.create_line(160+cam2,160+cam2,190+cam1,190+cam1)
w.create_line(190+cam1,10+cam1,160+cam2,40+cam2)
w.after(10,render(cam1,cam2))
我希望每次调用函数时都能使cam1和cam2不为0,但它不会让我传递更多参数与事件,我使用
w.bind("<Right>", right)
绑定它
答案 0 :(得分:0)
after
来电不正确。您必须为函数提供引用。可以给出其他参数。在你的情况下,它将是:
w.after910, render, cam1, cam2)
至于绑定,最常见的解决方案是使用lambda
或functools.partial
。例如:
w.bind("<Right>", lambda event, arg1="something", arg2="something else": right(arg1, arg2))
这个问题的变化已经在stackoverflow上被问了几十次。尝试在此网站上搜索[tkinter] bind argument
。您的问题应该标记为重复,但很难知道哪个问题是最好的原始问题。