frame leeren / labels mit StringVar entfernen
Verfasst: Donnerstag 7. März 2013, 13:52
Hallo, meine frage ist, wie ich einen frame einfach leeren kann.
er ist mit in ein canvas element eingebettet um eine scrollbar zu erhalten:
weshalb ich ihn ungerne löschen möchte. stattdessen würde ich ihn gerne leeren.
ich erstelle einige labels die mit StringVars verknüpft sind.
um ein beispiel anzubringen.
um diese zu löschen (und da mit kein einfacherer weg eingefallen ist, für vorschläge bin ich dankbar! meine liste ist lang...)
wollte ich wiefolgt vorgehen:
denn der kram soll weg. allerdings bekomme ich einen fehler
AttributeError: StringVar instance has no attribute 'destroy'
buttons hingehen lassen sich auf diese weise problemlos löschen.
das gleiche wenn ich grid_forget() o.ä. nutze.
ich kann stringvar einfach auf "" setzen via
was alle meine labels unsichtbar macht, aber auch nur weil sie sich farblich und ohne rand nicht vom hintergrund abheben. die labels sind immernoch da, und auch die scrollbar bleibt entsprechend lang. wird meine labelliste kürzer kann ich viel weiter als nötig nach unten scrollen und finde da eh nur leere fläche. unschön.
hatte jemand bereits ähnliche probleme, oder hat eine bessere alternative, oder eine lösung für mich?
ich wäre euch sehr verbunden
mit besten grüßen, mops
er ist mit in ein canvas element eingebettet um eine scrollbar zu erhalten:
Code: Alles auswählen
canvas = tk.Canvas(root, borderwidth=0)
frame = tk.Frame(canvas,height=500)
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw", tags="self.frame")
frame.bind("<Configure>", OnFrameConfigure)
def OnFrameConfigure(event):
canvas.configure(scrollregion=canvas.bbox("all"))
ich erstelle einige labels die mit StringVars verknüpft sind.
Code: Alles auswählen
labelliste=[]
meinText=tk.StringVar()
meinText("hallo python forum")
meinLabel=Label(frame,textvariable=meinText)
meinLabel.grid(row=0,column=0)
labelliste.append(meinLabel)
um diese zu löschen (und da mit kein einfacherer weg eingefallen ist, für vorschläge bin ich dankbar! meine liste ist lang...)
wollte ich wiefolgt vorgehen:
Code: Alles auswählen
for element in labelliste:
element.destroy()
AttributeError: StringVar instance has no attribute 'destroy'
buttons hingehen lassen sich auf diese weise problemlos löschen.
das gleiche wenn ich grid_forget() o.ä. nutze.
ich kann stringvar einfach auf "" setzen via
Code: Alles auswählen
for element in labelliste:
element.set("")
hatte jemand bereits ähnliche probleme, oder hat eine bessere alternative, oder eine lösung für mich?
ich wäre euch sehr verbunden

mit besten grüßen, mops