2017-01-19 5 views
-1

Ich möchte den Eintrag tkinter verwenden, damit der Benutzer den Namen einer Datei eingeben kann. Diese Datei wird in einer Variablen gespeichert, die dann zum Ausführen eines Validierungsprogramms verwendet wird, an dem ich gearbeitet habe. Mit dem Code, den ich jetzt habe, bekomme ich einfach einen ungültigen Dateifehler und der Code läuft nicht.Verwenden von Tkinter, um der Variablen den Dateinamen zuzuweisen

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

Hier ist der Code, ich verwende:

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) 

Die Idee ist, dass der Code unter der Anweisung with erst input_text ausführen zugeordnet ist, aber ich kann nicht einen Weg finden, zu tun Dies.

+0

BTW: immer in Frage gestellt FULL Fehlermeldung (Traceback), nicht nur seinen letzten Teil. Es gibt andere nützliche Informationen. dh. Es zeigt an, welche Linie ein Problem darstellt. – furas

Antwort

1

Wenn Sie möchten, dass Code nach einem Klick ausgeführt wird, fügen Sie ihn in Ihre Methode ein.

Auch input_text ist als Funktion definiert und open erwartet eine Datei als Ihre Fehlerzustände. Vielleicht möchten Sie den Inhalt Ihrer mtext oder StringVar direkt als Dateiname verwenden.

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() 

Beachten Sie, dass wenn Sie auf geöffnete Datei außerhalb dieser Methode zugreifen möchten, sollten Sie es global oder verwenden Sie Klassenstruktur.

Verwandte Themen