如何使 Checkbutton/box 单击时更改文本文件? (使用 Python 和 tkinter 库)[关闭]
Posted
技术标签:
【中文标题】如何使 Checkbutton/box 单击时更改文本文件? (使用 Python 和 tkinter 库)[关闭]【英文标题】:How to make a Checkbutton/box change a text file on-click? (Using Python and tkinter library) [closed] 【发布时间】:2013-05-03 18:09:33 【问题描述】:所以,我决定做这个项目来构建一个程序,这样我就可以记录我的书,我借了哪些书,我读过哪些书等等。对于“数据库”,我使用的是 .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”。
我首先想到的是创建一个包含每个检查按钮的值的列表,然后当按下任何检查按钮时,它将调用一个函数来创建一个新列表,其中包含每个按钮的新值。然后,它将比较两个列表并对第一个列表进行必要的更改,然后更改文件。问题是,我不知道如何创建第二个列表进行比较,所以我正在寻找如何做的帮助。不过,如果有人有更好的主意,那将是非常受欢迎的。
抱歉,帖子太长了。
【问题讨论】:
您的问题更多的是概念性而不是与编程相关的问题,因为在sqlite3
可以完美完成工作的情况下使用纯文本文件意味着大量开销。不幸的是,它过于本地化,我认为它不能作为未来用户的参考,所以我认为这篇文章超出了 *** 的范围。作为一般建议,我强烈建议您在项目中使用数据库并摆脱 txt 文件。
是的,我知道,只是我是一个初学者,所以我只是尝试了最简单的方法。如果可能的话,你能告诉我一些关于 sqlite3 的事情吗?
【参考方案1】:
我建议使用csv
模块而不是纯文本文件。它处理以逗号分隔值电子表格格式存储的数据,对于title
、author
、is_read
、borrowed_from
等基本字段,它应该可以正常工作,并且比sqlite3
更容易处理因为您不需要学习 SQL 或设计数据库模式。虽然有一些限制,所以我强烈建议阅读我链接到的文档,看看它是否符合您的需求。如果您的项目变得更复杂,那么阅读sqlite3
是您最好的选择。
【讨论】:
以上是关于如何使 Checkbutton/box 单击时更改文本文件? (使用 Python 和 tkinter 库)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章