Python 在两扇窗户之间来回走动

Python 在两扇窗户之间来回走动,python,tkinter,Python,Tkinter,我目前正在努力创建一个tkinter项目,其中包括几个窗口。我只想通过我的计划有规律地前进,一步一步地后退。经过大量的研究,我正在努力寻找一个例子来解释如何做到这一点 我试着在几篇文章后创建一个最小的示例,但它还没有起作用,老实说,我不太明白我在做什么 我最大的参考是这里的这篇文章,但它相当长且复杂: 另一方面,这个例子对我来说还不够。组合和解释可能已经起到了作用: 你能帮我创建一个最小的示例(有或没有实际窗口的代码)吗 并解释发生了什么。我认为它很简单,所以我想解释可能相当简短。(如果你

我目前正在努力创建一个tkinter项目,其中包括几个窗口。我只想通过我的计划有规律地前进,一步一步地后退。经过大量的研究,我正在努力寻找一个例子来解释如何做到这一点

我试着在几篇文章后创建一个最小的示例,但它还没有起作用,老实说,我不太明白我在做什么

我最大的参考是这里的这篇文章,但它相当长且复杂:

另一方面,这个例子对我来说还不够。组合和解释可能已经起到了作用:

  • 你能帮我创建一个最小的示例(有或没有实际窗口的代码)吗
  • 并解释发生了什么。我认为它很简单,所以我想解释可能相当简短。(如果你知道一个教程网站能很好地解释它,我也会很高兴的)
提前感谢,希望我们能为我和其他人创建一个有用的资源

 def Forward(self):    
        # Open secondary Window
        Secondary_Win = Toplevel()  
        #Close primary Window
        Main_Win.withdraw() #.deiconify() to show again
        Main_Win.destroy()

 def Backward(self):    
        # Close secondary Window
        Secondary_Win.withdraw 
        #Open primary Window
        Main_Win.deiconify()

编辑:正如@stovfl指出的那样:我想在实际窗口之间切换,而不仅仅是框架。对不起,这句话有点打嗝。

也许这有点接近你想要的:

from tkinter import *


root = Tk()



class temp_frame:

    def __init__(self, master):
        self.master = master
        self.secondary_win = None
        self.btn_next = Button(self.master, text="Forward", command=self.Forward)
        self.btn_next.pack()


    def Forward(self):    
        # Open secondary Window
        if not self.secondary_win:
            self.secondary_win = Toplevel()
            back_btn = Button(self.secondary_win, text="Back", command=self.Backward)
            back_btn.pack()
            self.master.withdraw()
        else:
            self.secondary_win.deiconify()
            self.master.withdraw()



    def Backward(self):    
        self.secondary_win.withdraw()
        self.master.deiconify()


temp = temp_frame(root)

root.mainloop()
说明:

框架是在类
temp\u frame
的帮助下创建的。框架具有向后和向前功能,按下向前时打开新窗口,按下向后时收回新窗口。当新窗口退出时,主窗口向前移动


编辑:修改代码以避免每次按下“前进”键时都创建新窗口。

您必须澄清是否要在一个窗口内的
tk.Frame
s之间切换,该窗口通常是主窗口,或者在多个
tk.Toplevel
窗口之间切换。对我来说似乎非常完美,谢谢。
def\uuuu init\uuuu
命名方案只是我假设的常见做法?谢谢,是的,这是正确的:def init是类的构造函数,用于初始化类变量。谢谢,这是一个很好的观点!我现在已经更新了我的答案,请看我的编辑。@temp123:好的,一个迂腐的观点:如果不是self.secondary\u-win:应该读
如果self.secondary\u-win没有: