如何在TkfileDialog中使用其他函数的变量?

时间:2015-06-10 08:07:59

标签: python user-interface tkinter

我打算编写一个GUI来导入URL数据,然后处理这些数据, 所以我有2个按钮。以下是我的代码。

from Tkinter import *

    root=Tk()
    root.title('Videos Episodes')
    root.geometry('500x300')

    def OpenFile():  # import URLs data from local machine
        paths=tkFileDialog.askopenfilename()
        return paths

    def read_files(paths): #read data from the directory from OpenFile
        with open(paths) as myfile:
                    return data 
    Button(root,text='Input',command=OpenFile).pack()
    Button(root,text='Process',command=read_files).pack()
    root.mainloop()

我的问题是当'处理'点击按钮,发生错误: Tkinter回调Traceback中的异常(最近一次调用最后一次):

File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args) TypeError: read_files() takes exactly 1 argument (0 given)

如何修复错误?

1 个答案:

答案 0 :(得分:0)

如果您想传递参数(您没有指定内容),请使用lambda

Button(root,text='Process',command=lambda: read_files('whatever')).pack()

也许,这就是你想做的事情(?):

Button(root,text='Process',command=lambda: read_files(OpenFile())).pack()

或者,您打算在全局变量中存储OpenFile的结果(通过单击其他按钮),并将其作为read_files的参数传递...?