Как использовать wait_variable, чтобы сделать флаги для графического интерфейса? - PullRequest
0 голосов
/ 25 апреля 2019

я делаю графический интерфейс с 3 кадрами, это 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...