Seite 1 von 1
Zwischen Frames wechseln
Verfasst: Donnerstag 10. Juni 2010, 20:09
von Barcellona
Hallo zusammen,
ich arbeite mich gerade durch ein Tutorial für Tkinter und habe bisher eine Sache noch nicht verstanden.
Und zwar, wie wird in Tkinter zwischen den darzustellenden Frames durchgewechselt?
Sprich, ich erstelle ein Frame mit 2 Buttons als Startbildschirm dar und möchte dann, dass bei Klick auf einen Button
ein anderer Frame dargestellt wird im Fenster.
Hat jemand vielleicht ein kleines Beispiel, wie das funktioniert?
Danke schon einmal!

Re: Zwischen Frames wechseln
Verfasst: Donnerstag 10. Juni 2010, 20:24
von numerix
Code: Alles auswählen
import Tkinter as tk
root = tk.Tk()
tk.Button(text="Klick mich", command=lambda :tk.Label(text="Neues Label").pack()).pack()
root.mainloop()
Reicht das? Oder geht es dir explizit um das Frame-Widget?
Re: Zwischen Frames wechseln
Verfasst: Donnerstag 10. Juni 2010, 20:47
von Barcellona
Danke!
Meine Idee war aber eher, das ganze dargestellte Fenster zu wechseln.
Sprich' einen großen Frame, in dem sich alles von Seite 1 befindet und bei Klicken des Buttons
soll eine komplett andere Seite kommen.
Bsp: Seite 1=Hauptmenü, Seite2=Unterfenster
Re: Zwischen Frames wechseln
Verfasst: Donnerstag 10. Juni 2010, 22:18
von Barcellona
Code: Alles auswählen
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master) # is a container
frame.pack() #make visible
# instance variable # foregroung # when clicked
self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
self.button.pack(side=LEFT) # as far as left as possible
self.hi_there = Button(frame, text="Hello", command=self.create_frame2(master))
self.hi_there.pack(side=LEFT)
def say_hi(self):
print "hi there, everyone!"
def create_frame2(self,master):
frame2=Frame(master)
frame2.pack()
self.hi_there = Button(frame2, text="Hi", command=self.say_hi)
self.hi_there.pack(side=LEFT)
root = Tk()
app = App(root)
root.mainloop()
So in der Art... allerdings wird der "Hi"-Button aus dem 2. Frame schon dargestellt bevor der "Hallo"-Knopf im 1. Button gedrückt wurde
Weiß jemand wieso?
Und was muss ich ändern um zwischen den Frames hin und her schalten zu können per Button?
Re: Zwischen Frames wechseln
Verfasst: Donnerstag 10. Juni 2010, 22:40
von EyDu
Barcellona hat geschrieben:So in der Art... allerdings wird der "Hi"-Button aus dem 2. Frame schon dargestellt bevor der "Hallo"-Knopf im 1. Button gedrückt wurde
Weiß jemand wieso?
Weil du create_frame2 ausführst und nicht die Funktion übergibst.
Re: Zwischen Frames wechseln
Verfasst: Freitag 11. Juni 2010, 07:53
von Barcellona
Aber der command-Teil des Buttons wird doch erst bei einem Klick auf den Button ausgeführt, oder nicht?
Wie übergebe ich denn dort richtig die Funktion?
Re: Zwischen Frames wechseln
Verfasst: Freitag 11. Juni 2010, 08:14
von EyDu
Barcellona hat geschrieben:Aber der command-Teil des Buttons wird doch erst bei einem Klick auf den Button ausgeführt, oder nicht?
Nein. Das Ergebnis des Ausdrucks rechts vom "=" wird an "command" gebunden. Du möchtest lambda, oder noch besser: functools.partial, verwenden.
Re: Zwischen Frames wechseln
Verfasst: Freitag 11. Juni 2010, 11:45
von Barcellona
Danke für den Tipp mit lambda!
Läuft jetzt...
Code: Alles auswählen
from Tkinter import *
class App:
def __init__(self, master):
self.frame = Frame(master) # is a container
self.frame.pack() #make visible
# instance variable # foregroung # when clicked
self.button = Button(self.frame, text="QUIT", fg="red", command=self.frame.quit)
self.button.pack(side=LEFT) # as far as left as possible
self.hi_there = Button(self.frame, text="Hello", command=lambda:self.create_frame2(master))
self.hi_there.pack(side=LEFT)
def say_hi(self):
print "hi there, everyone!"
def create_frame2(self,master):
self.frame.pack_forget()
frame2=Frame(master)
frame2.pack()
self.hi_there = Button(frame2, text="Hi", command=self.say_hi)
self.hi_there.pack(side=LEFT)
root = Tk()
app = App(root)
root.mainloop()
Re: Zwischen Frames wechseln
Verfasst: Samstag 12. Juni 2010, 19:05
von str1442