tkinter を使用して Python でプログラムを作成しようとしています。このプログラムには、ユーザーが作成した本のリストが含まれているはずです。メイン ウィンドウ (リストが表示されているウィンドウ) には、リストに本を追加するオプションを含むメニュー バーが表示されます。このオプションをクリックすると、別のウィンドウが開きます。今回は、ユーザーが本のタイトルと追加ボタンを入力して、リストにボタンを追加する 1 つのエントリ ボックスが表示されます。
リストは .txt ファイルに保存されます。
これは私がこれまでに書いたプログラムです:
import sys
from tkinter import *
def newBook():
def add():
BookTitle = v.get()
bookTitle = '\n' + BookTitle
books = open('c:/digitalLibrary/books.txt', 'a')
books.write(bookTitle)
books.close()
addWindow = Tk()
v = StringVar()
addWindow.geometry('250x40+500+100')
addWindow.title('digitalLibrary - Add Book')
newBookEntry = Entry(addWindow,textvariable=v)
newBookEntry.pack()
addButton = Button(addWindow, text='ADD', command=add)
addButton.pack()
def refresh():
books = open('c:/digitalLibrary/books.txt', 'r')
bookList = books.readlines()
books.close()
for i in range (0, len(bookList)):
bookOne = Label(text=bookList[i])
bookOne.grid(row=i, column=0, sticky=W)
def quitProgram():
tfQuit = messagebox.askyesno(title='Close Program', message='Are you sure?')
if tfQuit:
window.destroy()
window = Tk()
menubar = Menu(window)
window.geometry('400x400+200+100')
window.title('digitalLibrary')
booksmenu = Menu(menubar, tearoff=0)
booksmenu.add_command(label='Add Book', command=newBook)
booksmenu.add_command(label='Delete Book')
booksmenu.add_command(label='Close Program', command=quitProgram)
menubar.add_cascade(label='digitalLibrary', menu=booksmenu)
books = open('c:/digitalLibrary/books.txt', 'r')
bookList = books.readlines()
books.close()
for i in range (0, len(bookList)):
bookOne = Label(window, text=bookList[i])
bookOne.grid(row=i, column=0, sticky=W)
refreshButton = Button(window, text='Refresh', command=refresh)
refreshButton.grid(row=0, column=1)
window.config(menu=menubar)
window.mainloop()
これが機能することは私には論理的に思えますが、そうではありません。Add Book ウィンドウの ADD ボタンをクリックすると、.txt ファイルに改行が追加されるだけです。OS ライブラリを使用して、書籍の追加ウィンドウ用に別の python ファイルを作成すると機能することはわかっていますが、可能であれば、すべてを 1 つのコードにまとめたいと思います。いろいろ試してみたり、ネットで調べたりしましたが、どこにも行き着きませんでした。