簡體   English   中英

使用 Tkinter 和 OOP 創建不同類的過渡幀(Python)

[英]Using Tkinter and OOP to create transition frames in different classes (Python)

我正在為我的項目創建框架,到目前為止,當單擊按鈕時,我將它從主頁轉到主頁。 我面臨的問題是,當我嘗試從主頁到日志頁面的 go 時,我遇到了在 ZA2F2ED4F8EBC06CBB4C21A2 中調用 show_frame() function(位於 MainApplication)的問題。

我將如何 go 在 MainPage 中使用 arguments 以便我可以從主頁移動到日志頁面?

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

        # initialize frames
        self.frames = {}
        for F in (HomePage, MainPage, LogPage):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        # show home page frame first
        self.show_frame(HomePage)

    def show_frame(self, cont): # <-- FUNCTION HERE
        frame = self.frames[cont]
        frame.tkraise()

class HomePage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        continue_button = ttk.Button(self, text="Enter program", width=15,
                                     command=lambda: controller.show_frame(MainPage)) # <-- works here
        continue_button.pack()

class MainPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

    def success_actions(self):
        self.run_script_button["text"] = "View log"
        self.run_script_button.configure(
                     command=lambda: controller.show_frame(LogPage)) # <-- want to use here

class LogPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        pass

class MainPage(tk.Frame):
def __init__(self, parent, controller):
    self.controller = controller
    tk.Frame.__init__(self, parent)

def success_actions(self):
    self.run_script_button["text"] = "View log"
    self.run_script_button.configure(
                 command=lambda: self.controller.show_frame(LogPage))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM