Python Tkinter按钮事件在加载时触发

Python Tkinter按钮事件在加载时触发,python,events,button,tkinter,Python,Events,Button,Tkinter,到目前为止,我有一个非常简单的程序,只有几个按钮上有事件。但是,当我运行程序时,按钮事件会在按钮启动后触发 我的代码中的麻烦部分如下所示: def initUI(self): self.parent.title("Windows") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) abtn = Button(self, text="O

到目前为止,我有一个非常简单的程序,只有几个按钮上有事件。但是,当我运行程序时,按钮事件会在按钮启动后触发

我的代码中的麻烦部分如下所示:

def initUI(self):

    self.parent.title("Windows")
    self.style = Style()
    self.style.theme_use("default")
    self.pack(fill=BOTH, expand=1)

    abtn = Button(self, text="Open", command=load_file(area))
    abtn.grid(row=1, column=3)

    cbtn = Button(self, text="Close", command=self.parent.destroy)
    cbtn.grid(row=2, column=3, pady=4)
我一行一行地运行它,加载_文件(这是一个打开的文件对话框,区域是我之前初始化的画布)事件甚至在下一个按钮初始化或窗口可见之前打开。 尽可能具体地说:我不希望它在我没有点击按钮的情况下开火。那么我做错了什么

编辑:

这是加载文件事件:

def load_file(area):
    fname = askopenfilename(filetypes=(("TIF", "*.tif;*.tiff"),
                                       ("GIF", "*.gif"),
                                       ("JPEG", "*.jpg") ))
    if fname:
        fname = fname.replace("/", "\\")
        print(fname)
        Images.path = fname
        import_file(fname, area)
    else:
        print "Could not open file ", fname

    return fname

在下一行中,代码不
load_file
,而是调用
load_file
并绑定函数调用的返回值

abtn = Button(self, text="Open", command=load_file(area))
使用
labmda
将其替换为函数对象:

abtn = Button(self, text="Open", command=lambda: load_file(area))

它应该是
command=lambda:load\u文件(区域)


command=load_file(area)
将调用
load_file
并将返回值设置为
command

其工作状态,谢谢。我只是想知道为什么这是我在谷歌搜索了一个小时后第一次看到这个lamdba选项…@Martin,或者,你可以定义另一个函数(我们称它为
f
),它调用
load\u file(area)
,而不是
lambda
,并将
f
作为
command
参数传递。