2013-05-03 63 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上閱讀是你最好的選擇。

相關問題