Python Label verstecken oder Frames "neustarten"
Verfasst: Sonntag 10. August 2014, 16:02
Hallo, in meinem Programm habe ich zwei Images in einem Label. All dies findet in einem Frame statt. Nun möchte ich, dass wenn man aus dem Frame rausgeht, dieses Label verschwindet. Ich habe es mit destroy() versucht, nur bleibt das Label dann gelöscht. Gibt es irgendeine Möglichkeit den Frame "neuzustarten" oder den Label wiederherzustellen, wenn man zum besagten Frame zurückkehrt? Oder gibt es Möglichkeiten einen Label zu verstecken? Schonmal Danke im voraus.
Hier ist noch mein Code:
Code: Alles auswählen
# -*- coding: cp1252 -*-
from glob import glob
from itertools import cycle
import Tkinter as tk
from Tkinter import *
from functools import partial
import random
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.title("test")
self.state('zoomed')
container= tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames={}
for F in (fenster, mode1):
frame= F(container, self)
self.frames[F]=frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(fenster)
def show_frame(self, c):
frame=self.frames[c]
frame.tkraise()
class fenster(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label=tk.Label(self, text="Das ist die Startseite")
label.pack()
button=tk.Button(self, text="Start",
command=lambda: controller.show_frame(mode1))
button.pack()
class mode1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label1=tk.Label(self, text=" ")
label1.pack()
def show_next_1():
image.configure(file=next(images_1))
self.after(10, show_next_2)
def show_next_2():
image.configure(file=next(images_2))
self.after(10)
images_1=cycle(glob("Frame1.gif"))
images_2=cycle(glob("Frame2.gif"))
image = PhotoImage()
label=Label(image=image)
label.pack()
def ok(label1):
def do_a():
show_next_1()
def do_b():
show_next_1()
WORDS={"test1":do_a,
"test2":do_b}
choice=random.choice(list(WORDS))
label1['text']=choice
WORDS[choice]()
button1=tk.Button(self, text='Knopf', command=partial(ok, label1))
button1.pack()
def zurueck():
controller.show_frame(fenster)
label.destroy()
button=tk.Button(self, text="Zurück",
command=zurueck)
button.pack()
if __name__== "__main__":
app=SampleApp()
app.mainloop()