使用Tkinter将filename分配给变量

时间:2017-01-19 06:50:49

标签: python variables tkinter

我希望能够使用tkinter条目允许用户输入文件名。该文件存储在一个变量中,然后用于运行我一直在研究的验证程序。但是,使用我现在的代码,我只是得到一个无效的文件错误,并且代码没有运行。

TypeError: invalid file: <function input_text at 0x035DBD68>

以下是我正在使用的代码:

def input_text():
    mtext = stuff.get
    label2 = Label(root,text=mtext).pack()
    return

root = Tk()
stuff = StringVar()

root.title("Project")
root.geometry('300x100')

label = Label(root,text="My Project").pack()
button1 = Button(root,text="OK",command=input_text).pack()
entry1 = Entry(root,textvariable=stuff).pack()

with open(input_text, 'r') as f:
    reader = csv.reader(f)

我们的想法是,在分配input_text之前,with语句下的代码不会执行,但我找不到这样做的方法。

1 个答案:

答案 0 :(得分:1)

如果您希望在单击按钮后运行某些代码,请将其放在方法内。

此外,input_text被定义为函数,open期望文件作为错误状态。您可能希望将mtextStringVar的内容直接用作文件名。

def input_text():
    mtext = stuff.get() #notice the parentheses. You need to call the get method
    label2 = Label(root,text=mtext).pack()
    with open(mtext, 'r') as f:
        reader = csv.reader(f)


root = Tk()
stuff = StringVar()

root.title("Project")
root.geometry('300x100')

label = Label(root,text="My Project").pack()
button1 = Button(root,text="OK",command=input_text).pack()
entry1 = Entry(root,textvariable=stuff).pack()

请注意,如果要访问该方法之外的已打开文件,则应将其设置为全局或使用类结构。