2016-03-20 9 views
1

Ich versuche ein Skript zu erstellen, das eine Textdatei erstellt, und der Name dieser Textdatei entspricht zu dem, was vom Benutzer eingegeben wurde. Hier ist mein Code:TypeError: nicht unterstützte Operandentypen s für +: 'StringVar' und 'str' // Eine Textdatei erstellen

from tkinter import* 

fenetre = Tk() 
def creation(): 
    open(f1 + '.txt', "w") 
Label1 = Label(fenetre, text = 'Nom de votre classe :') 
Label1.pack(side = LEFT, padx = 5, pady = 5) 
f1 = StringVar() 
Champ = Entry(fenetre, textvariable= f1, bg ='bisque', fg='maroon') 
Champ.focus_set() 
Champ.pack(side = LEFT, padx = 5, pady = 5) 
Bouton = Button(fenetre, text ='Valider', command = creation()) 
Bouton.pack(side = LEFT, padx = 5, pady = 5) 
fenetre.mainloop() 

Aber es funktioniert nicht und gibt den folgenden Fehler:

TypeError: unsupported operand type(s)s for +: 'StringVar' and 'str' 

gelang es mir die Datei einmal zu schaffen, aber es hat keinen Namen.

Antwort

1

Sie müssen f1.get() aufrufen, wenn Sie den Wert verwenden möchten. f1 selbst ist keine Zeichenfolge, sondern ein Objekt, das eine Zeichenfolge enthalten kann. Wenn Sie die Methode get() aufrufen, wird die tatsächliche Zeichenfolge zurückgegeben, die sie enthält.

def creation(): 
    open(f1.get() + '.txt', "w") 
+0

Dank ein viel, das funktioniert und ich ein anderes Problem gelöst, erstellt mein Skript eine Datei, wenn ich es ins Leben gerufen, gelöscht ich die() nach Bouton = Button (fenetre, text = ‚Valider‘, Befehl = Schöpfung()) –