Uczyń każdą stronę ramką. Następnie wszystkie przyciski muszą być ukryte, co jest widoczne, a następnie uczynić pożądaną ramkę widoczną.
Prosta metoda polega na układaniu ramek jeden na drugim (jest to jeden raz, gdy ma to sens) Ta technika działa najlepiej, gdy wszystkie strony mają ten sam rozmiar; w rzeczywistości wymaga to wyraźnego ustawienia rozmiaru ramki zawierającej.
Poniżej znajduje się przykładowy przykład. Nie jest to jedyny sposób rozwiązania problemu, wystarczy udowodnić, że nie jest to szczególnie trudny problem do rozwiązania:
import Tkinter as tk
class Page(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
def show(self):
self.lift()
class Page1(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is page 1")
label.pack(side="top", fill="both", expand=True)
class Page2(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is page 2")
label.pack(side="top", fill="both", expand=True)
class Page3(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is page 3")
label.pack(side="top", fill="both", expand=True)
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
p1 = Page1(self)
p2 = Page2(self)
p3 = Page3(self)
buttonframe = tk.Frame(self)
container = tk.Frame(self)
buttonframe.pack(side="top", fill="x", expand=False)
container.pack(side="top", fill="both", expand=True)
p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p3.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
b1 = tk.Button(buttonframe, text="Page 1", command=p1.lift)
b2 = tk.Button(buttonframe, text="Page 2", command=p2.lift)
b3 = tk.Button(buttonframe, text="Page 3", command=p3.lift)
b1.pack(side="left")
b2.pack(side="left")
b3.pack(side="left")
p1.show()
if __name__ == "__main__":
root = tk.Tk()
main = MainView(root)
main.pack(side="top", fill="both", expand=True)
root.wm_geometry("400x400")
root.mainloop()
niż ty, dokładnie to, co było po! –
@ CasparWylie: Cały ten przykład oznacza, że cały ten przykład jest jednym blokiem tekstu. Możesz podzielić go na dowolną liczbę plików, co nie ma nic wspólnego z rozwiązaniem. Każda "strona" może z łatwością być własnym modułem. –
@BryanOakley, czy nie byłoby lepiej używać notebooka do takich rzeczy? http://www.tkdocs.com/tutorial/complex.html#notebook – user3885927