首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter:为什么我的“<KeyRelease>”事件不起作用?

Tkinter:为什么我的“<KeyRelease>”事件不起作用?
EN

Stack Overflow用户
提问于 2017-04-10 00:50:57
回答 1查看 427关注 0票数 1

当“返回键发布”事件发生时,我试图从Entry Box获取值。但它似乎不起作用。

我的代码类似于:

代码语言:javascript
复制
EntryBox = Text(base, bg="white",width="29", height="5", font="Arial")
EntryBox.bind("<KeyRelease-Return>", sendData(EntryBox.get(1.0, END)))

我的sendData函数是:

代码语言:javascript
复制
def sendData(param):
    if len(param) > 1:
            EntryBox.delete(1.0, END)
            insertText(param)
            s.sendall(str.encode(param))
            data = s.recv(4096)
            insertText(data.decode('utf-8'))

My insertText函数:

代码语言:javascript
复制
def insertText(param):
        ChatLog.config(state = NORMAL)
        ChatLog.insert(END, param)
        ChatLog.config(state = DISABLED)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-10 00:56:34

绑定参数必须是函数,而不是函数的结果。通过将()添加到函数的末尾,它将立即执行,并提供结果来绑定。您需要创建一个函数并提供:

代码语言:javascript
复制
EntryBox = Text(base, bg="white",width="29", height="5", font="Arial")
def on_return(event):
    sendData(EntryBox.get(1.0, END))
EntryBox.bind("<KeyRelease-Return>", on_return)

对于这么小的函数,如果需要,可以使用lambda创建它:

代码语言:javascript
复制
EntryBox = Text(base, bg="white",width="29", height="5", font="Arial")
EntryBox.bind("<KeyRelease-Return>", lambda event: sendData(EntryBox.get(1.0, END)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43313517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档