【发布时间】:2021-05-21 11:11:07
【问题描述】:
我正在尝试创建一个应用程序,让我可以为我玩的游戏生成音乐。但无论如何,我的目标是从 sqlite3 数据库保存和加载数据。但实际上发生的是:
Traceback (most recent call last):
File "d:\Visual Studio\DRIFT_TUNER\gui.py", line 360, in <module>
app = Application(master=root)
File "d:\Visual Studio\DRIFT_TUNER\gui.py", line 16, in __init__
self.populate_list()
File "d:\Visual Studio\DRIFT_TUNER\gui.py", line 350, in populate_list
self.tunes_list.delete(0, tk.END)
AttributeError: 'Application' object has no attribute 'tunes_list'
当我调用函数 populate_list() 时会发生这种情况:
def populate_list(self):
self.tunes_list.delete(0, tk.END)
for row in db.fetch():
self.tunes_list.insert(tk.END, row)
这是我的两个文件的 Pastebins:
gui.py:https://pastebin.com/aJ5qAwtSdb.py:https://pastebin.com/mp3RnVK2
populate_list() 应该清除列表框中的文本,然后从数据库中获取数据并将该数据逐行插入到列表框中。我正在使用带有 tkinter 和 sqlite3 的 Python 3.9.5。
我尝试过的事情:
- 将所有缩进转换为空格,并将所有空格转换为缩进。
- 重新声明
tunes_list
我一开始并不完全了解这个错误意味着什么,所以任何帮助都会很好。
【问题讨论】:
-
self.tunes_list是在您的load_window方法中创建的。仅当按下按钮(名为self.load_button)时才会调用您的load_window。但是,一旦您创建了Application对象,您就尝试调用使用self.tunes_list的populate_list。因此,只有在按下按钮时才创建变量,但在此之前尝试访问它 -
@TheLizzard 您可以将其发布为答案,因为它有效。我想将其标记为正确。