2013-05-03 62 views
1

因此,我决定做这个项目来构建一个程序,这样我就可以记录我的书籍,我借阅了哪些书籍,等等。对于“数据库”我使用的是包含图书标题,作者等的.txt文件。一行一行,一本书与作者共享相同的行,但它们在不同的文件中。因此,举例来说,我有:如何使按钮/框更改文本文件点击? (使用Python和tkinter库)

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

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

对不起,很长的文章。

+0

因为在['sqlite3'](http://docs.python.org/2/library/sqlite3.html)可以完成这个工作的情况下使用纯文本文件,所以你的问题比编程更为概念化完全意味着很多开销。不幸的是,它太局部化了,我不认为它可以作为未来用户的参考,所以在我看来这篇文章已经超出了StackOverflow的范围。作为一般性建议,我强烈建议您在项目中使用数据库并删除txt文件。 – 2013-05-03 18:18:56

+0

是的,我知道,这只是我是一个初学者,所以我只是尝试最简单的方法。如果可能,你能告诉我关于sqlite3的一些信息吗? – AugustoQ 2013-05-03 18:23:34

回答

1

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

相关问题