实战项目 编制简易笔记本
要求:
#开发记事本功能
'''开发一个简单的记事本。
包含:新建、保存、修改文本内容、退出
包含:各种快捷键的处理
'''
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 19 07:43:27 2024
@author: Administrator
"""
#开发记事本功能
'''开发一个简单的记事本。
包含:新建、保存、修改文本内容、退出
包含:各种快捷键的处理
'''
from tkinter import *
from tkinter.filedialog import *
from tkinter.colorchooser import *
class Application(Frame):
def __init__(self,master=None):
super().__init__(master)
self.master = master
self.textpad = None
self.filename = None
self.contextMenu = None
self.pack()
self.createWidget()
def createWidget(self):
menubar = Menu(root)
menuFile = Menu(menubar)
menuEdit = Menu(menubar)
menuHelp = Menu(menubar)
menubar.add_cascade(label="文件(F)",menu=menuFile)
menubar.add_cascade(label="编辑(E)",menu=menuEdit)
menubar.add_cascade(label="帮助(H)",menu=menuHelp)
menuFile.add_command(label="新建(N)",accelerator="ctrl+n",command=self.newfile)
menuFile.add_command(label="打开(O)",accelerator="ctrl+o",command=self.openfile)
menuFile.add_command(label="保存(S)",accelerator="ctrl+s",command=self.savefile)
menuFile.add_separator()
menuFile.add_command(label="退出",accelerator='ctrl+q',command=self.exit)
root["menu"]=menubar
root.bind("<Control-n>",lambda event:self.newfile())
root.bind("<Control-s>",lambda event:self.savefile())
root.bind("<Control-o>",lambda event:self.openfile())
root.bind("<Control-q>",lambda event:self.exit())
self.textpad = Text(root,width=50,height=30)
self.textpad.pack()
self.contextMenu = Menu(root)
self.contextMenu.add_command(label="背景颜色",command=self.openAskColor)
root.bind("Button-3",self.createContextMenu)
def newfile():
self.textpad.delete("1.0",'end')
self.filename = asksaveasfilename(title='另存为',initialfile="未命名.txt",filetype=["文本文档","*.txt"],defaultextension="*.txt")
print(self.filename)
self.savefile()
def openfile(self):
self.textpad.delete("1.0","end")
with askopenfile(title="打开文件") as f:
self.textpad.insert(INSERT,f.read())
self.filename = f.name
print(f.name)
def savefile(self):
with open(self.filename,"w") as f:
c = self.textpad.get(1.0,END)
f.write(c)
def exit(self):
root.quit()
def openAskColor(self):
s1 = askcolor(color = "red", title="选择背景色")
self.textpad.config(bg=s1[1])
def createContextMenu(self,event):
self.contextMenu.post(event.x_root,event.y_root)
if __name__=="__main__":
root = Tk()
root.geometry("500x500+250+300")
root.title("简易记事本")
app = Application(master=root)
root.mainloop()