最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
代码
import ttkbootstrap as ttk
from ttkbootstrap.constants import \*
# tkinter 内的组件
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
from tkinter.messagebox import \*
from tkinter.scrolledtext import ScrolledText
# 文件类型
file_types = (("txt 文本","\*.txt"),("java 文件","\*.java"),("c 文件","\*.c"),
("c++ 文件","\*.cpp"),("python 文件","\*.py"),("所有文件","\*.\*"),)
# 记事本应用程序
class Application(ttk.Frame):
def \_\_init\_\_(self,master=None):
super().__init__(master, padding=15)
self.master = master # 框架基于根容器
self.textarea = None # textarea文本区域
self.filepath = "" # 记事本保存的文件路径
self.filename = "无标题" # 文件名
self.unchange_file = "" # 保存未修改的文件(记录当时打开的文件)
self.pack() # 放置应用程序
self.createWidget() # 记事本中各个组件在这里创建
def createWidget(self):
# 全局变量
global root
# 创建主菜单栏
menubar = ttk.Menu(root)
'''创建一个弹出菜单'''
menuPop = ttk.Menu(root,tearoff=False)
#创建子菜单
menuFlie = ttk.Menu(menubar)
menuEdit = ttk.Menu(menubar)
menuHelp = ttk.Menu(menubar)
# 将子菜单加入到主菜单栏
menubar.add_cascade(label='文件(F)',menu=menuFlie)
menubar.add_cascade(label='编辑(E)',menu=menuEdit)
menubar.add_cascade(label='帮助(H)',menu=menuHelp)
# 添加菜单项
menuFlie.add_command(label='打开',accelerator='Ctrl+O',command=self.open_file)
menuFlie.add_command(label='保存',accelerator='Ctrl+S',command=self.save_file)
menuFlie.add_command(label='另存为',accelerator='Ctrl+W',command=self.saveas_file)
menuFlie.add_separator() #添加分割线
menuFlie.add_command(label='退出',accelerator='Ctrl+Q',command=self.exit)
menuPop.add_command(label="剪切", command=self.cut_text)
menuPop.add_command(label="复制", command=self.copy_text)
menuPop.add_command(label="粘贴", command=self.paste_text)
menuPop.add_command(label="全选", command=self.select_all)
menuPop.add_command(label="清空", command=self.clear_text)
#将主菜单栏加到根窗口
root.config(menu=menubar)
style = ttk.Style()
#文本编辑区
self.textarea = ttk.ScrolledText(root,
highlightcolor=style.colors.primary,
highlightbackground=style.colors.border,
highlightthickness=1)
self.textarea.pack(fill=BOTH,expand=True)
#增加快捷键的处理
root.bind('<Control-o>',lambda event:self.open_file())
root.bind('<Control-s>',lambda event:self.save_file())
root.bind('<Control-w>',lambda event:self.save_file())
root.bind('<Control-a>',lambda event:self.select_all())
root.bind('<Control-d>',lambda event:self.clear_text())
root.bind('<Control-q>',lambda event:self.exit())
root.bind('<Key>',lambda event:self.changed_file()) # 检查文件是否修改
self.textarea.bind("<Button-3>",lambda event:self.popup(menuPop=menuPop,event=event)) # 绑定鼠标右键,执行popup函数
def cut\_text(self,event=None):
self.textarea.event_generate('<<Cut>>')
def copy\_text(self,event=None):
self.textarea.event_generate('<<Copy>>')
def paste\_text(self,event=None):
self.textarea.event_generate('<<Paste>>')
def select\_all(self,event=None):
self.textarea.tag_add('sel', '1.0', 'end')
def clear\_text(self,event=None):
global root
self.textarea.delete("1.0",END)
if self.filename[0] == "\*":
self.filename = self.filename[1:]
root.title(self.filename + "-记事本")
def popup(self,menuPop,event):
menuPop.post(event.x_root, event.y_root)
# 打开文件选择对话框
def open\_file(self):
global root
self.filepath = askopenfilename(filetypes=file_types)
if self.filepath != "":
try:
with open(self.filepath,"r",encoding="utf-8") as file:
# 清空文本域
self.textarea.delete("1.0",END)
# 将文件内容添加进来
msg = file.read()
self.textarea.insert(END,msg)
# 记录打开的文件
self.unchange_file = msg.strip()
o_index = self.filepath.rfind("/") + 1
self.filename = self.filepath[o_index:]
root.title(self.filename + "-记事本")
except PermissionError as e:
# 清空文本域
self.textarea.delete("1.0",END)
# 弹出窗口
showerror(title='错误', message='权限不足,无法打开该文件!')
except UnicodeDecodeError as e1:
self.textarea.delete("1.0",END)
showerror(title='错误', message='文件格式错误,无法打开该文件!')
except Exception as e2:
self.textarea.delete("1.0",END)
showerror(title='错误', message='无法打开该文件!')
# 保存文件
def save\_file(self,exit_program=False):
global root
# 判断是否是新文件(file\_name为空)
if "无标题" not in self.filename:
if self.filename[0] == "\*":
save_msg = self.textarea.get("1.0",END)
with open(self.filepath,"w",encoding="utf-8") as file:
file.write(save_msg)
# 更新保存后的文件
self.unchange_file = save_msg.strip()
# 去除\*
self.filename = self.filename[1:]
root.title(self.filename + "-记事本")
else:
# 新文件--> 另存为
self.saveas_file()
# 另存为文件
def saveas\_file(self):
global root
self.filepath = asksaveasfilename(defaultextension=".txt", initialfile="未命名.txt",filetypes=file_types)
s_index = self.filepath.rfind("/") + 1
if self.filepath != "":
# 存在文件路径
with open(self.filepath,"w",encoding="utf-8") as file:
file.write(self.textarea.get("1.0",END))
self.filename = self.filepath[s_index:] # 文件名记录
else:
self.filename == "无标题"
root.title(self.filename + "-记事本")
### 最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
#### 👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
![](https://img-blog.csdnimg.cn/img_convert/604bae65027d4d67fb62410deb210454.png)
#### 👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
![](https://img-blog.csdnimg.cn/img_convert/fa276175617e0048f79437bd30465479.png)
#### 👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
![](https://img-blog.csdnimg.cn/img_convert/16ac689cb023166b2ffa9c677ac40fc0.png)
#### 👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
![](https://img-blog.csdnimg.cn/img_convert/0d8c31c50236a205928a1d8ae8a0b883.png)
#### 👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
![](https://img-blog.csdnimg.cn/img_convert/99461e47e58e503d2bc1dc6f4668534a.png)
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**