प्रत्येक पृष्ठ को एक फ्रेम बनाएं। फिर, आपके सभी बटनों को जो कुछ भी दिखाना है उसे छुपाएं, फिर वांछित फ्रेम को दृश्यमान बनाएं।
ऐसा करने का एक आसान तरीका फ्रेम को एक दूसरे के शीर्ष पर ढेर करना है (यह एक समय है जब place
समझ में आता है) और फिर, lift()
वह फ्रेम जिसे आप दिखाना चाहते हैं। यह तकनीक सर्वोत्तम काम करती है जब सभी पृष्ठ एक ही आकार के होते हैं; वास्तव में, यह आवश्यक है कि आप स्पष्ट रूप से फ्रेम युक्त आकार निर्धारित करें।
निम्नलिखित एक प्रदूषित उदाहरण है। समस्या को हल करने का यह एकमात्र तरीका नहीं है, केवल यह प्रमाण है कि हल करने के लिए यह विशेष रूप से कठिन समस्या नहीं है:
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()
आपके मुकाबले बहुत कुछ ठीक है, ठीक उसी के बाद मैं क्या कर रहा था! –
@CasparWylie: यह सब उदाहरण का अर्थ यह है कि यह पूरा उदाहरण टेक्स्ट का एक ब्लॉक है। आप इसे जितनी चाहें उतनी फाइलों में विभाजित कर सकते हैं - इसका समाधान के साथ कुछ लेना देना नहीं है। प्रत्येक "पृष्ठ" आसानी से अपना मॉड्यूल हो सकता है। –
@ ब्रायन ओक्ले, क्या इस तरह की चीजों के लिए नोटबुक का उपयोग करना बेहतर नहीं होगा? http://www.tkdocs.com/tutorial/complex.html#notebook – user3885927