python - 如何将参数传递给 Tkinter `bind` 回调?

标签 python tkinter

<分区>

我有这个代码:

#!/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"))

关于python - 如何将参数传递给 Tkinter `bind` 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276717/

相关文章:

python - 是否可以将 Django 的 SafeExceptionReporterFilter 与 AdminEmailHandler 以外的其他东西一起使用?

python - 在 python 中解析字符串

python - 如何添加按键绑定(bind)?

python - 使用 Python 和 Tkinter 创建温度程序

python - 如何在 Tkinter 中使用建议文本预填充文本字段?

python - 在 Windows 上使用 python 获取 QProcess 的 PID

javascript - 部分页面更新

python - 在python函数中修改一个int列表

python - 有没有办法调整组合框条目的大小?

python - 如何使用 tkinter 颠倒笔记本中的选项卡标签