#!/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()
Run Code Online (Sandbox Code Playgroud)
我意识到程序一启动就会调用该函数,但我不知道如何将参数传递给 keypress 函数而不立即调用它。有人可以解释如何修复它吗?
更新代码:
#!/usr/bin/python3
from Tkinter import *
def keypress(key):
print key, "pressed"
root = Tk()
root.bind("<Return>", lambda event: keypress(key="enter"))
root.bind("a", lambda event: keypress(key="a"))
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
在您的bind函数调用中,您实际上是在调用函数,然后绑定函数的结果(即None)。您需要直接绑定函数。解决方案是lambda为此。
例子 -
root.bind('<Return>', lambda event: keypress(key="enter"))
root.bind('a', lambda event: keypress(key="a"))
Run Code Online (Sandbox Code Playgroud)
如果要将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"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6539 次 |
| 最近记录: |