题目
请设计并实现一款文本编辑器。程序允许用户打开、保存文本文件。
例如:
在用户打开文件时,会呈现打开文件对话框,
在用户保存文件时,会呈现保存为对话框
当打开文件出错时,程序不会崩溃,而是会提示错误信息,
当保存文件出错时,程序不会崩溃,而是会提示错误信息,
要求:
1.当再次打开另一个文件时,程序应当显示正确。
2.当打开和保存文件失败时,程序不应崩溃,而应提示错误信息。
3.使用tkinter.filedialog模块中的askopenfilename方法h和asksaveasfilename方法可以打开“打开文件”和“保存为文件“对话框。
4.使用异常处理,保证程序正常运行。
请将提交的实验报告命名为如下格式。
学号+姓名+实验7
例如:123456789+王思聪+实验7
解
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
import tkinter.messagebox
class FileEditor:
def __init__(self):
window = Tk()
menubar = Menu(window)
window.config(menu=menubar)
operationMenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=operationMenu)
operationMenu.add_command(label="Open", command=self.openFile)
operationMenu.add_command(label="Save", command=self.saveFile)
frame0 = Frame(window)
frame0.grid(row=1, column=1, sticky=W)
openImage = PhotoImage(file="image/open.png")
saveImage = PhotoImage(file="image/save.png")
Button(frame0, image=openImage,
command=self.openFile).grid(row=1, column=1, sticky=W)
Button(frame0, image=saveImage,
command=self.saveFile).grid(row=1, column=2)
frame1 = Frame(window)
frame1.grid(row=2, column=1)
scrollbar = Scrollbar(frame1)
scrollbar.pack(side=RIGHT, fill=Y)
self.text = Text(frame1, width=40, height=20,
wrap=WORD, yscrollcommand=scrollbar.set)
self.text.pack()
scrollbar.config(command=self.text.yview)
window.mainloop()
def openFile(self):
filenameforreading = askopenfilename()
try:
infile = open(filenameforreading, "r", encoding="UTF-8")
self.text.delete(1.0, "end")
self.text.insert(END, infile.read())
infile.close()
except:
self.errorHandle("打开文件失败!")
def saveFile(self):
filenameforwriting = asksaveasfilename()
try:
outfile = open(filenameforwriting, "w")
outfile.write(self.text.get(1.0, END))
outfile.close()
except:
self.errorHandle("保存文件失败!")
def errorHandle(self, message):
tkinter.messagebox.showerror(title="error", message=message)
FileEditor()
直接运行程序是无法成功的,需要在同路径下新建一个文件夹 image
,在该文件夹下放入打开按钮和保存按钮的图标,这个自行网上查找即可
代码仅供参考