Ich versuche, einen GUI-BMI-Rechner für die Sommerarbeit zu erstellen. Ich möchte ein Feature implementieren, bei dem, sobald Sie den BMI berechnet haben, sich die Farbe des Labels je nach Ihrem BMI ändert.Wie erstelle ich eine dynamische Labelfarbe in Tkinter?
Mein aktueller Code lautet:
self.AnswerlabelVariable = tkinter.StringVar() #Creates a variable used later for changing the label text
Answerlabel = tkinter.Label(self, text=u" ", textvariable=self.AnswerlabelVariable, anchor='w', fg="black",bg="light grey") #Creates a label
Answerlabel.grid(column=1,row=4, sticky='EW') #Defines where the label is and how it will move
...the calculation for the BMI happens...
if float(BMI2)<int(17): #Creates an 'if' statement
self.MessagelabelVariable.set("You are underweight!") #Changes a label to display a new message.
self.AnswerlabelVariable.set(fg='black', bg='blue') #Changes a labels colour (WIP WIP WIP)
Während das Label seinen Text ändert, wird die Farbe nicht ändern und stattdessen eine Fehlermeldung;
line 56, in OnCalculateButtonClick
self.AnswerlabelVariable.set(fg='black', bg='blue') #Changes a labels colour (WIP WIP WIP)
TypeError: set() got an unexpected keyword argument 'fg'
Kann jemand helfen?
Ich habe das versucht. Wenn ich es in den Code einfüge, erhalte ich den folgenden Fehler: self.AnswerlabelVariable.configure (fg = 'schwarz', bg = 'blau') #Änderungen einer Etikettenfarbe (WIP WIP WIP) AttributError: 'StringVar' Objekt hat kein Attribut 'configure' –
Ja, Sie müssen 'configure' auf dem Label 'Answerlabel' aufrufen. Ich werde meine Antwort aktualisieren! Dies liegt daran, dass die AnswerlabelVariable nicht dafür verantwortlich ist, wie das Label aussieht, das Sie ändern möchten. Es enthält nur den Text, den es anzeigen soll. Sie müssen also das Label-Objekt konfigurieren, nicht seine Textvariable. – Dartmouth
Ich habe die folgende Fehlermeldung erhalten, als ich den neuen, bearbeiteten Code ausprobierte: 'AttributError: '_tkinter.tkapp' Objekt hat kein Attribut 'AnswerLabel'' Außerdem habe ich den Code als' self.config.Answerlabel (fg = 'schwarz', bg = 'blau') 'um den Fehler zu bekommen 'AttributError:' Funktion 'Objekt hat kein Attribut' MessageLabel'' Und übrigens danke für deine weitere Hilfe :) –