我有这个代码:
#!/usr/bin/python3
from Tkinter import *
def keypress(key):
print key, "pressed"
if __name__ == '__main__':
root = Tk()
root.bind('<Return>', keypress(key="enter"))
root.bind('a', keypress(key="a"))
root.mainloop()
我意识到程序一启动就调用了该函数;我怎样才能让它在不立即调用的情况下将参数传递给按键函数?
在您的 bind
函数调用中,您实际上是在调用函数,然后绑定(bind)函数的结果(即 None
)。您需要直接绑定(bind)功能。解决方案是为此使用 lambda
。
例子-
root.bind('<Return>', lambda event: keypress(key="enter"))
root.bind('a', lambda event: keypress(key="a"))
如果您想将 event
参数传播到 keypress()
函数,您需要在函数中定义参数,然后传递它。示例 -
def keypress(event, key):
print key, "pressed"
...
root.bind("<Return>", lambda event: keypress(event, key="enter"))
root.bind("a", lambda event: keypress(event, key="a"))