首页 > 解决方案 > 帧更新 Tkinter

问题描述

所以我在这里阅读了一些帖子并尝试了所有内容。我尝试的当前方法是将数据存储在控制器中:

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

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

        self.app_data = {"building": tk.StringVar()}

        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):

            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(StartPage)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

然后我让我的 PageOne 接收用户关于他们想要什么建筑的输入:

class PageOne(tk.Frame):

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

        #buidling
        bldg_label = ttk.Label(self, text="Building Name (ie. ACAD):", font=LARGE_FONT)
        bldg_label.grid(row=0, column=0, padx=2, pady = 10)

        self.bldg_entry =ttk.Entry(self,width = 6, textvariable = self.controller.app_data["building"])
        self.bldg_entry.grid(row=0, column=1, padx=2, pady=10)
button1 = ttk.Button(self, text="next", command = lambda: controller.show_frame(PageTwo))

        button1.grid(row = 1, column = 0)

最后,我想将他们在输入框中输入的建筑物显示到一个标签中,如下所示:

class PageTwo(tk.Frame):

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

        bldg = self.controller.app_data["building"].get()
        bldg_label = ttk.Label(self, text = "Building: " + str(bldg), font=LARGE_FONT)

        bldg_label.grid(row = 0, column =0)
        button1 = ttk.Button(self, text="Back to Home",
                            command=lambda: controller.show_frame(StartPage))
        button1.grid(row = 1, column =0)

我知道需要进行某种更新,但我似乎无法获得正确的结构来完成这项工作。标签打印:Building:里面什么都没有。我的问题是如何获取存储在字典中的数据以更新 SecondPage 中的建筑标签?任何帮助将不胜感激!

标签: pythontkinterframesupdating

解决方案


推荐阅读