在Tkin中使用bind函数的Python问题

2024-10-03 06:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个基本的文本编辑器,当用户使用save菜单栏时,会调用save函数。我创建了一个新的框架,并为用户输入了一个条目来输入文件名。我正在为条目添加一个绑定,这样当用户按下Enter键时,它将调用saveFile,最终将正确地保存文件。你知道吗

问题是,当我创建绑定时,它似乎在调用saveFile函数,但不确定为什么它没有等我按Enter键。你知道吗

我试过找有关这方面的文章,但似乎找不到问题所在。你知道吗

def save(self):
    tempWin =  Tk()

    frame = Frame(tempWin, width=100, height=100)
    entry = Entry(frame)
    frame.pack()
    entry.pack()

    entry.bind("<Return>",self.saveFile(entry,tempWin))


def saveFile(self,file,tempWin):
    print("saveFile")

Tags: 函数用户self框架savedef条目frame
1条回答
网友
1楼 · 发布于 2024-10-03 06:24:10

是的,这正是正在发生的事情。当Python计算此行时:

entry.bind("<Return>",self.saveFile(entry,tempWin))

它将self.saveFile(entry,tempWin)视为有效的函数调用。所以,它执行它。你知道吗

您可以通过在lambda function中“隐藏”对self.saveFile的调用来解决此问题:

entry.bind("<Return>", lambda e: self.saveFile(entry,tempWin))

下面是一个简单的脚本来演示:

from tkinter import Tk
root = Tk()
root.bind("<Return>", lambda e: print('hi'))
root.mainloop()

e的目的是捕获触发绑定时发送给函数的click事件。你知道吗

相关问题 更多 >