Wie lösche ich ein Etikett aus dem Bild in eine python-Tk GUI
#here is the example code:
label1 = Label(app, text="This is a Label!")
label1.pack()
#But when i do:
label1.pack_forget()
#I get this error:
#AttributeError: 'NoneType' object has no attribute 'pack_forget'
#I also try:
label1.destroy()
Bekomme ich den gleichen Fehler.
Ich möchte in der Lage sein, das Etikett aus dem Bild, so kann ich
legen Sie eine aktualisierte Etikett auf dem Bildschirm.
- Der code in deiner Frage nicht den Fehler, Sie sagen, es tut. Macht Ihrem code erstellen, die das label so:
label1=Label(...).pack(...)
? - Ja der code macht das label so. dies ist ein Beispiel für mein problem. Übrigens ich arbeite mit python 2.7.5, wenn diese info hilft, danke.
- Ok, du bist also bitten uns den code Debuggen, indem Sie zeigen uns-code, der nicht Ihr code. In der Zukunft, wenn Sie helfen wollen, zeigen Sie uns den tatsächlichen code, der das problem veranschaulicht, bitte.
InformationsquelleAutor WaydeHall | 2014-09-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem, wie erklärt in den Kommentaren die Frage, ist, dass Sie das tun:
Verursacht
label1
zuNone
. Wenn Siex=foo().bar()
,x
wird immer auf das Ergebnisbar()
. In diesem Fall, das Ergebnis derpack(...)
immerNone
solabel1
immerNone
. Und natürlichNone
keine Methode namenspack_forget
.Die Lösung ist ein separates widget-Erstellung von widget-layout:
Auf die Frage im Titel: zum entfernen eines widget vom Bildschirm, die Sie verwenden können
pack_forget()
odergrid_forget()
je nachdem, ob Sie verwendet werdenpack
odergrid
auf das widget. Bear in Verstand, dies bedeutet nicht zerstören das widget nur entfernt Sie aus der Ansicht.Vollständig zu entfernen Sie das widget rufen Sie die
destroy()
Methode, die löschen das widget und entfernen Sie Sie aus der Ansicht.Erstens, Sie müssen Ihren Namen label
label1
, aber dann müssen Sielabel.pack_forget()
. es solltelabel1.pack_forget()
.zweitens stellen Sie sicher, Sie tun
label1.pack_forget()
- und/oderlabel1.destroy()
vor (was ich nehme)app.mainloop()
wenn Sie möchten, aktualisieren Sie die Etiketten, die Sie verwenden sollten
label.config(attributes to update)
Beispiel: