为什么我的Python Tkinter按钮会自动执行

3

我有一个Python文件,其他文件调用该文件。每次从其他文件导入并调用mainApp时,Python文件内的tkinter按钮会自动执行。以下是Python文件的一部分代码:

from Tktable import *
def exp(Output):
    import csv
    from tkFileDialog import askdirectory
    folder=askdirectory();
    if folder:
        path = folder+'/outputTable.csv';
        file = open(path, 'w');
        writer = csv.writer(file)
        title = ['Premise','Conclusion','Support','Confidence','Lift']
        writer.writerow(title);
        zip(*Output)
        for item in zip(*Output):
            writer.writerow(item)
        file.close()
def mainApp(Output):
    from Tkinter import Tk, Label, Button, Scrollbar, Frame
    root = Tk()
    top = Frame(root).pack(side = 'top', fill = 'x')
    ...
    export = Button(top, text='EXPORT', command=exp(Output))
    export.grid(row=0, column=4, sticky = 'e')
    ...

我该如何停止按钮的自动执行?为什么会发生这种情况?有人能帮忙吗?谢谢!

1个回答

4
这是因为您正在调用函数。相反,传递一个函数对象,例如使用lambda创建的函数对象。
..., command=(lambda: exp(Output)))

嗨,伊格纳西奥,这非常有帮助。我已经将它应用到其他按钮上,它们都运行得很完美,除了一个。我有一个退出框架的按钮。当我添加这个:command = (lambda: root.destroy)时,它不起作用,我能知道为什么吗? - fyr91
好的,谢谢。我已经将root.destroy更改为des(root)函数。现在它可以工作了。 :) - fyr91

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接