【发布时间】:2021-09-19 23:20:10
【问题描述】:
我正在尝试创建一个列表,然后使用 python 和 tkinter 从列表中添加/读取项目。
我需要创建一个空白列表,并添加一些东西,然后还能够从另一个类的函数中创建的小部件中清除条目。我一直在尝试一切,但无法弄清楚如何像我需要的那样访问小部件/列表。
我不断收到的错误是 AttributeError: 'function' object has no attribute 'data'
感谢任何帮助。
from tkinter import font as tkfont
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.title_font = tkfont.Font(family='Helvetica', size=18, weight="bold", slant="italic")
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 = {}
self.frames["StartPage"] = StartPage(parent=container, controller=self)
self.frames["StartPage"].grid(row=0, column=0, sticky="nsew")
self.show_frame("StartPage")
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.grid(columnspan=5, rowspan=5)
self.start = tk.Button(self, text='Start', command=lambda: self.start_frame())
self.start.pack(side='top')
def start_frame(self):
data = []
frame = tk.Frame(self)
frame.pack(side='top', fill='both')
entry = tk.Text(frame)
entry.bind('<Return>', lambda event: stored_functions.print_date(self, entry=entry.get('1.0', 'end-1c')))
entry.pack(side='top')
class stored_functions():
def print_date(self, entry):
StartPage.start_frame.entry.delete('1.0', tk.END)
all_entries = StartPage.start_frame.data
print('The last entry was {} \n\n Here is all the entries: {}'.format(entry, all_entries))
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
【问题讨论】:
-
您能否更具体地说明错误是什么?你说你尝试了一切:你尝试了什么,这些尝试出了什么问题? 如何您需要访问小部件/列表?更具体地说明您的问题有助于我们更好地理解,以便我们为您提供帮助。
-
@SamMatzko 我不断收到错误消息 AttributeError: 'function' object has no attribute 'data'
-
谢谢。您可能应该将此放在您的问题中,以便其他用户在不阅读 cmets 的情况下知道错误是什么。
-
感谢您的建议。我加进去了。
标签: python python-3.x tkinter