繁体   English   中英

帧之间的共享数据

[英]Shared Data between Frames Tkinter

我希望有人能告诉我我要去哪里错了。 我希望能够从任何一个类中访问此shared_Data字典,但是在运行脚本时出现错误“ AttributeError:'_ tkinter.tkapp'对象没有属性'shared_Data'”。 我正在尝试实现此答案中描述的内容https://stackoverflow.com/a/33650527/7336464

import tkinter as tk
from tkinter import ttk

LARGE_FONT = ("Verdana", 20)

class APTInventoryapp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        tk.Tk.iconbitmap(self, default='barcode_scanner.ico')
        tk.Tk.title(self, 'Inventory Scanning')
        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):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky='nsew')

        self.shared_Data = {'String1': tk.StringVar(),
                            'String2' : tk.StringVar(),
                            'number1' : tk.IntVar()
            }

        self.show_frame(StartPage)

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

class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        upcOutputLabel = ttk.Label(self, text = self.controller.shared_Data['String1'].get(), font=LARGE_FONT)
        upcOutputLabel.pack(pady=10,padx=10)
        upcEntryField = ttk.Entry(self)
        upcEntryField.focus()
        upcEntryField.pack()
        upcEnterButton = ttk.Button(self, text = 'Enter', command=print('Enter Clicked!'))
        upcEnterButton.pack()


class PageOne(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        mgrOutputLabel = ttk.Label(self, text = '', font=LARGE_FONT)
        mgrOutputLabel.pack(pady=10,padx=10)
        mgrbackButton = ttk.Button(self,text = 'Back to home', command=lambda: controller.show_frame(StartPage))
        mgrbackButton.pack()

app = APTInventoryapp()
app.mainloop()

在创建页面之后才创建self.shared_Data ,但是在创建页面时正在使用它。 应用程序中似乎还有其他错误,但这就是为什么您遇到此特定错误的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM