我想在使用tkinter的python中創建一個程序,並且這個程序應該有一個由用戶創建的書籍列表。在主窗口(帶有列表的那個窗口)上,應該有一個菜單欄,可以選擇將書添加到列表中。點擊後,此選項應打開另一個窗口,這次有一個輸入框,用戶應輸入書名和添加按鈕,將按鈕添加到列表中。如何打開另一個窗口並從中獲取數據,然後保存到文件中?
該列表保存在.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()
這似乎是合乎邏輯,我認爲這應該工作,但它只是沒有。當我單擊添加書籍窗口上的添加按鈕時,它所做的只是將換行符添加到.txt文件。 我知道如果我使用操作系統庫併爲添加書籍窗口創建一個單獨的python文件,它可以工作,但如果可能的話,我寧願將它全部放在一個代碼中。 我已經嘗試了很多東西,並嘗試在網絡中搜索它,但我無處可去。
太感謝你了,它的工作完美。 – AugustoQ 2013-05-02 23:36:46