[英]Shared Data between Frames Tkinter
I was hoping someone could tell me where I am going wrong. 我希望有人能告诉我我要去哪里错了。 I would love to be able to access this shared_Data dictionary from any one of my classes, however I get the error "AttributeError: '_tkinter.tkapp' object has no attribute 'shared_Data'" when I run script. 我希望能够从任何一个类中访问此shared_Data字典,但是在运行脚本时出现错误“ AttributeError:'_ tkinter.tkapp'对象没有属性'shared_Data'”。 I am trying to implement what is described in this answer https://stackoverflow.com/a/33650527/7336464 我正在尝试实现此答案中描述的内容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()
You don't create self.shared_Data
until after you create the pages, but you are using it while creating the pages. 在创建页面之后才创建self.shared_Data
,但是在创建页面时正在使用它。 There appears to be other errors in the app, but that's why you're getting this specific error. 应用程序中似乎还有其他错误,但这就是为什么您遇到此特定错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.