1

所以,我决定做这个项目来构建一个程序,这样我就可以记录我的书,我借了哪些书,我读过哪些书等等。对于“数据库”,我使用的是 .txt 文件,其中包含书名、作者等。一行中的一本书和所有一本书与其作者共享同一行,但它们位于不同的文件中。所以,例如,我有:

FILE A:                     |              FILE B:
Harry Potter                |           J.K. Rowling
The Fellowship of the Ring  |         J.R.R. Tolkien

等等所有其他信息。
现在,我为每本书添加了一个检查按钮,这样我就可以标记我读过的那些,并创建了一个名为 read 的 .txt 文件,每行中都带有“SELECTED”或“NOT-SELECTED”来表示状态检查按钮。
然后,我通过一个贯穿 read.txt 文件的 for 循环将检查按钮添加到程序中,并添加与文件中的行一样多的检查按钮。如果文件中的行显示为“SELECTED”,那么它将检查按钮设置为选中(checkbutton.selected()),否则它只创建检查按钮。
现在,我想要的是程序将在按下相应行按钮后立即更改 read.txt 文件中的行,因此,如果我按下 Harry Potter 的按钮,例如,读取的第一行。 txt 将更改为“SELECTED”,如果我再次单击它,它将更改回“NOT-SELECTED”。
我首先想到的是创建一个包含每个检查按钮的值的列表,然后当按下任何检查按钮时,它将调用一个函数来创建一个新列表,其中包含每个按钮的新值。然后,它将比较两个列表并对第一个列表进行必要的更改,然后更改文件。问题是,我不知道如何创建第二个列表进行比较,所以我正在寻求如何做的帮助。不过,如果有人有更好的主意,

对不起,很长的帖子。

4

1 回答 1

1

我建议使用csv模块而不是纯文本文件。它处理以逗号分隔值电子表格格式存储的数据,对于诸如title, author, is_read,等基本字段,它应该可以正常工作,并且比您不需要学习 SQL 或设计数据库模式borrowed_from更容易处理sqlite3. 虽然有一些限制,所以我强烈建议阅读我链接到的文档,看看它是否符合您的需求。如果您的项目变得更复杂,那么继续阅读sqlite3是您最好的选择。

于 2013-05-03T18:49:36.707 回答