2017-06-26 3 views
0

Ich versuche herauszufinden, warum ich keine Variable von einem Widget-Eintrag an eine Variable übergeben kann, die als Benutzername innerhalb einer Objektklasse gedacht ist.Eine Variable übergeben - Python

Wie es den folgenden Fehler geschrieben: Typeerror: eingeben() fehlt 1 erforderlich Positions Argument: 'Selbst'

class User: 
    'a class to define users' 
    def __init__(self, username, goal, contra, gender, weight): 
     self.username = username 
     self.goal = goal 
     self.contra = contra 
     self.gender = gender 
     self.weight = weight 

'Adds date and current weight to an array to track progress' 
    #def weighIn[date, weight]: 
    def setUser(self, username): 
     self.username = string 
def enter(self): 
    global e1 
    global string 
    string = e1.get() 
    setUser() 

namescreen = Tk.Tk() 
namescreen.title("Current Exercise") 

var = StringVar() 
label = Label(namescreen, textvariable=var) 
var.set("Hi! What is your name?") 
label.pack() 
usr = StringVar() 
e1 = Entry(namescreen, textvariable=usr) 
e1.pack() 
b1 = tkinter.Button(namescreen, text ="Enter", command =enter) 
b1.pack() 


namescreen.bind('<Return>', enter) 
namescreen.mainloop() 

ich auch das Hinzufügen newUser = Benutzer versucht haben. init (selbst, "Default" ...) und es sagt mir, dass Selbst nicht definiert ist. Ich bin mir nicht sicher, was ich falsch mache.

+0

sieht wie ein Einrückungsfehler aus, der 'eine' Funktion eingibt, aber keine Methode Ihres Objekts. –

+0

@Thomas hat meine Antwort für dich funktioniert? –

Antwort

1

Erstens, in Ihrer enter Funktion können Sie setUser() ohne eine Instanz der Klasse User nicht anrufen, weil es eine Member-Funktion ist.

Zweitens, sollten Sie die enter Funktion als eine Member-Funktion der Klasse Benutzer enthalten. Dann müssen Sie ein Benutzerobjekt erstellen und die Schaltfläche an User.event und nicht nur event binden.

Dieser Code wird jedoch korrekt ausgeführt.

import Tkinter as Tk 

class User: 
    'a class to define users' 
    def __init__(self, username, goal, contra, gender, weight): 
     self.username = username 
     self.goal = goal 
     self.contra = contra 
     self.gender = gender 
     self.weight = weight 

    'Adds date and current weight to an array to track progress' 
    #def weighIn[date, weight]: 
    def setUser(self, username): 
     self.username = string 
     print('Username is {}'.format(self.username)) 
    def enter(self): 
     global e1 
     global string 
     string = e1.get() 
     self.setUser(string) 

namescreen = Tk.Tk() 
namescreen.title("Current Exercise") 

user = User('','','','','') 

var = Tk.StringVar() 
label = Tk.Label(namescreen, textvariable=var) 
var.set("Hi! What is your name?") 
label.pack() 
usr = Tk.StringVar() 
e1 = Tk.Entry(namescreen, textvariable=usr) 
e1.pack() 
b1 = Tk.Button(namescreen, text ="Enter", command =user.enter) 
b1.pack() 


namescreen.bind('<Return>', user.enter) 
namescreen.mainloop() 
Verwandte Themen