【发布时间】:2019-03-25 16:15:09
【问题描述】:
我得到:
print (p.s) AttributeError: StartPage instance has no attribute 's'
这是我的代码:
import Tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.s = []
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
container = tk.Frame(self)
container.grid(row=0, column=0, sticky='we')
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, images_result):
page_name = F.__name__
frame = F(parent=container, controller=self)
frame.grid(row=0, column=0, sticky='nsew')
self.frames[page_name] = frame
self.show_frame("StartPage")
def get_SP(self):
return self.frames["StartPage"]
def images(self, page_name):
self.s = [1, 2]
frame = self.frames[page_name]
frame.tkraise()
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.grid(row=0, column=0, sticky='snew')
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.image_btn = tk.Button(self, text="Images", command=lambda: controller.images("images_result"))
self.image_btn.grid(row=0, column=0, sticky='snew')
class images_result(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
p = self.controller.get_SP()
print (p.s)
app = SampleApp()
app.mainloop()
已编辑:
我希望 SampleApp 中的函数 images 更新 SampleApp 的属性 s 然后我希望能够从类 images_results 访问它。
我尝试使用
print(self.controller.s)
但这给了我 [] 并且似乎函数 images 对 s 属性所做的修改对 images_result 不可见。
【问题讨论】:
-
那么你为什么期望
StartPage有一个s属性呢? -
@Aran-Fey 我正在尝试从一页到另一页的信息以显示它,如果这就是您的问题的意思
-
@Aran-Fey 类似于link
-
您意识到
SampleApp具有s属性,而不是StartPage? -
@Aran-Fey 对不起,我的错,我已经编辑了我的问题,请再次阅读并尝试帮助我
标签: python python-2.7 tkinter