如何使用wait_variable为gui创建标志?

时间:2019-04-25 02:55:04

标签: python-3.x user-interface

我用3帧制作gui,它们是startPage,PageOne,PageTwo并使用tk.frame。我正在尝试从互联网上获取一些代码,并且运行良好。但是我怎么知道用户是否先打开PageOne或PageTwo,然后又回到StartPage?我听说过wait_variable,但我不知道该怎么做。

class myApp(tk.Tk):

def __init__(self, *args, **kwargs):
    tk.Tk.__init__(self, *args, **kwargs)

    self.title_font = tkfont.Font(family='Helvetica', size=18, weight="bold", slant="italic")

    # the container is where we'll stack a bunch of frames
    # on top of each other, then the one we want visible
    # will be raised above the others
    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 (StartPage, PageOne, PageTwo):
        page_name = F.__name__
        frame = F(parent=container, controller=self)
        self.frames[page_name] = frame

        # put all of the pages in the same location;
        # the one on the top of the stacking order
        # will be the one that is visible.
        frame.grid(row=0, column=0, sticky="nsew")

    self.show_frame("StartPage")

def show_frame(self, page_name):
    '''Show a frame for the given page name'''
    frame = self.frames[page_name]
    frame.tkraise()


class StartPage(tk.Frame):

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    label = tk.Label(self, text="This is the start page", font=controller.title_font)
    label.pack(side="top", fill="x", pady=10)

    button1 = tk.Button(self, text="Go to Page One",
                        command=lambda: controller.show_frame("PageOne"))
    button2 = tk.Button(self, text="Go to Page Two",
                        command=lambda: controller.show_frame("PageTwo"))
    button1.pack()
    button2.pack()
    self.test()

def test(self):

    '''
        if you came from PageOne : print("hy from Page One")
        if you came from PageTwo : print("hy from Page Two")

    '''

class PageOne(tk.Frame):

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    label = tk.Label(self, text="This is page 1", font=controller.title_font)
    label.pack(side="top", fill="x", pady=10)
    button = tk.Button(self, text="Go to the start page",
                       command=lambda: controller.show_frame("StartPage"))
    button.pack()

class PageTwo(tk.Frame):

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    label = tk.Label(self, text="This is page 2", font=controller.title_font)
    label.pack(side="top", fill="x", pady=10)
    button = tk.Button(self, text="Go to the start page",
                       command=lambda: controller.show_frame("StartPage"))
    button.pack()


if __name__ == "__main__":
app = myApp()
app.mainloop()

0 个答案:

没有答案