2013-10-10 3 views
1

У меня есть файл python, который вызывается из других файлов. Каждый раз, когда файл python импортируется и mainApp вызывается из других, кнопка tkinter внутри файла 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') 
    ... 

Как я мог остановить выполнение автоматической кнопки? И почему это происходит? Может кто-нибудь мне помочь? Спасибо!

ответ

2

Это происходит потому, что вы вызываете функцию. Передайте вместо него объект функции, например, созданный с помощью lambda.

..., command=(lambda: exp(Output))) 
+0

Hi Ignacio, это очень полезно. Я применил это к другой кнопке, они отлично работают, кроме одного. У меня есть кнопка для выхода из рамки. когда я добавляю это: command = (lambda: root.destroy), он не работает, могу я знать почему? – fyr0049

+0

'root.destroy' уже является функциональным объектом. –

+0

хорошо, спасибо, я изменил функцию root.destroy на des (root). он работает сейчас. :) – fyr0049

Смежные вопросы