我正在尝试在我的
addtolist(self)
类中使用我的函数TopSoftwareWindow()
,并且我不断得到
AttributeError: 'Toplevel' object has no attribute 'addtolist'
这是我要修复的特定类的代码
class TopSoftwareWindow(ttk.Frame):
def __init__(self):
self = tk.Toplevel()
self.geometry("800x600")
self.resizable(False, False)
self.title("Software Window")
self.iconbitmap('MediaTracker_Icon.ico')
# Everything that appears on this window
self.Entry_Field = ttk.Entry(self)
self.Text_List = tk.Listbox(self)
self.Category_List = tk.Listbox(self)
self.New_Entry_Btn = ttk.Button(self, text="New Entry", command=self.addtolist)
self.Save_File_Btn = ttk.Button(self, text="Save File")
self.Load_File_Btn = ttk.Button(self, text="Load File")
self.Quit_Btn = ttk.Button(self, text="Quit")
self.Entry_Field.place(x= 0, y= 0, width= 724)
self.New_Entry_Btn.place(x= 725, y= 0)
self.Text_List.place(x= 0, y= 25, width= 625, height= 570)
self.Category_List.place(x= 626, y= 25, width= 99, height= 570)
self.Save_File_Btn.place(x= 725, y= 25)
self.Load_File_Btn.place(x= 725, y= 50)
self.Quit_Btn.place(x= 725, y= 570)
def addtolist(self):
text = self.Entry_Field.get()
if text:
self.Text_List.insert(tk.END, text)
self.Entry_Field.delete(0, tk.END)
我只是希望能够将这些内容添加到 GUI 内的文本列表中,但这会导致整个窗口不显示。
我真的很感谢尽快提供任何帮助,因为这是周日到期的作业,而我已经为此苦苦挣扎了 3 天。
问题是你在这里压倒了
self
(你真的不想/不需要这样做):
self = tk.Toplevel()
也就是说,我怀疑你在这里甚至不需要
Toplevel
窗口。如果您尝试设置 tkinter 应用程序,您可以/应该从主类中的 tk.Tk
继承,如下所示:
import tkinter as tk
from tkinter import ttk
class TopSoftwareWindow(tk.Toplevel):
def __init__(self):
super().__init__() # initialize Tk (the superclass)
# self = tk.Toplevel() # you don't need this
self.geometry("800x600")
self.resizable(False, False)
self.title("Software Window")
self.iconbitmap('MediaTracker_Icon.ico')
# Everything that appears on this window
self.Entry_Field = ttk.Entry(self)
self.Text_List = tk.Listbox(self)
self.Category_List = tk.Listbox(self)
self.New_Entry_Btn = ttk.Button(self, text="New Entry", command=self.addtolist)
self.Save_File_Btn = ttk.Button(self, text="Save File")
self.Load_File_Btn = ttk.Button(self, text="Load File")
self.Quit_Btn = ttk.Button(self, text="Quit")
self.Entry_Field.place(x= 0, y= 0, width= 724)
self.New_Entry_Btn.place(x= 725, y= 0)
self.Text_List.place(x= 0, y= 25, width= 625, height= 570)
self.Category_List.place(x= 626, y= 25, width= 99, height= 570)
self.Save_File_Btn.place(x= 725, y= 25)
self.Load_File_Btn.place(x= 725, y= 50)
self.Quit_Btn.place(x= 725, y= 570)
def addtolist(self):
text = self.Entry_Field.get()
if text:
self.Text_List.insert(tk.END, text)
self.Entry_Field.delete(0, tk.END)
if __name__ == '__main__':
app = TopSoftwareWindow()
app.mainloop()