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

【讨论】:

以上是关于如何使 Checkbutton/box 单击时更改文本文件? (使用 Python 和 tkinter 库)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React js 中单击时更改 div 背景?

更改图像的来源使其在第一次单击时其宽度/高度为零

如何使更改立即出现在用户界面中?

使按钮的背景颜色在单击后更改并保持不变

dojo datagrid 将在更改排序时使页面“跳转”

单击时使图像填充屏幕