在python 2.7.2中将小部件绑定到函数时,如何发送多个参数?



只是想知道,我如何将输入字段绑定到(使用返回键)一个函数,该函数需要2个参数,计数事件作为其中一个,没有lambda或类,只有一个函数和2个参数:

def function(event,entry):#entry is the widget to be focused. also, entry is just a place holder NOT A WIDGET. entry MUST be specified. it cannot be removed.
    entry.focus()
entry1.bind("<Return>",function(None,entry2))

当绑定entry1时,它所绑定的函数在绑定时立即执行,然后忽略所有其他输入。它允许我在字段中放入字符,但是当我点击return时,它不会遍历并聚焦第二个条目。如果我删除None作为参数之一,它会给我一个错误,只定义了两个必需参数中的一个,不管我用什么代替None,它仍然不起作用。我如何使它工作没有类或匿名函数?

当您编写function(None,entry2)时,您正在/立即调用它-该函数可能返回None,因此本质上您正在做的是:

function(None, entry2)
entry1.bind("<Return>", None)

你要找的可能是:

entry1.bind("<Return>", lambda e: function(entry2))

生成一个函数(注意:生成函数,但不调用它),该函数接受一个参数(事件,"e")并忽略它

当你点击返回键时,这个生成的函数将被调用,然后它将依次调用function(entry2)

答案是使用lambda。有关更好的解释,请参阅effbot.org上的Tkinter回调

如果没有完整的示例,就很难给出完整的答案。然而,有一个常见的错误很容易修复:绑定的第二个参数应该是函数名,而不是函数调用。

如果将bind语句更改为:

entry1.bind("<Return>", function)

函数将在触发Return事件时调用,而不是在执行bind语句时调用。

相关内容

  • 没有找到相关文章