控制流而不是tkinter绑定调用的函数

用户名

我有以下功能

def insert_word(listbox,text):
    t_start.insert(INSERT, text)
    print "worked"

通过以下方式绑定到“ <Return>”键

listbox.bind("<Return>", insert_word(t_start,listbox.get(ACTIVE)))

为什么在控制流到来时而不是在按Return键时调用该函数?如果可以以其他方式触发绑定功能,那么绑定功能背后的整个思想是什么?

我需要一个带有__init____call__方法的类来解决此问题吗?

妄想

之所以调用该函数,是因为您实际上正在调用它

listbox.bind("<Return>", insert_word(t_start,listbox.get(ACTIVE)))
#                        ^----this function call is evaluated---^

您要做的是为绑定提供一个回调,即一个函数对象。您可以使用闭包来做到这一点。

def callback(t_start, text):
    def inner():
        t_start.insert(INSERT, text)
    return inner # Return the function

listbox.bind("<Return>", callback(t_start, listbox.get(ACTIVE)) )
#                        ^----this call returns a function----^
#                        Be aware that     ^--this parameter-^ is
#                        still evaluated when the interpreter
#                        evaluates the statement

触发事件时将调用回调函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可可绑定调用valueForKey:而不是valueForKeyPath:

如何将触发绑定的 TKinter 按钮/标签传递给绑定调用的函数?

应该绑定调用回调函数的函数吗?

Android:使用数据绑定调用ViewModel函数

快速控制流(函数调用)

确定调用函数的字段

可以使用COCOS2D javascript绑定调用新的本机函数

如何使用bootstrap-switch.js绑定调用敲除函数?

NSTextView textDidChange 未通过绑定调用

ctypes绑定调用引发分段错误

编译器决定调用函数“ POW”,而不是在编译时对其求值。为什么?

为什么使用绑定而不是函数调用?

如何使用 Vue 从样式绑定调用方法?

如何从我的绑定调用方法并在 iOS 中覆盖?

登录方法未在Android中使用数据绑定调用

Xamarin.Android绑定调用Java Object方法

使用绑定调用服务器存储过程

Outlook COM:通过后期绑定调用OpenSharedItem

控制流问题:已调用但未执行的Python函数

调用函数中其他列的控制流

AngularJs:从外部调用绑定到“this”的控制器函数(例如浏览器控制台)

JOOQ批处理语句中的绑定调用数是否有上限?

使用键绑定调用 VSCode 命令时未检测到所选文件

从我的命令绑定调用默认的 WPF 文本框粘贴处理程序

Java RMI-注册表绑定调用导致NoSuchObjectException

函数调用绑定的区别?

使用指向成员函数的指针来确定调用哪个函数

tkinter中的调用函数

被其他函数调用时,函数不是控制台日志记录