Python完成电脑记事本软件的详细过程-深圳网站优化推广公司

Python完成电脑记事本软件的详细过程

简介: Python完成电脑记事本软件的详细过程

本文代码即注释。(完整代码附后)

关于这个简易记事本的实现,gui界面采用python的tkinter库

下面展示总体的功能区的方法实现。


96a4eda08ad74bd58ef8ac0c51fa0f58.png读到这里,应该对该记事本的主要功能以及代码实现过程有一个粗略的认识。

该程序各个功能都独立成了方法,降低了代码耦合度,方便维护与修改。

下面是完整代码以及代码的详细注释:

# -*- coding: utf-8 -*-
# @Author:︶ㄣ释然
# @Time: 2022/7/6 21:41
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import os
filename_initStr = ''
# 菜单栏——1、文件——①新建
def new_file():
    # 关于三个全局变量:
    #   top = tk.Tk()
    #   filename_initStr = ''
    #   text_more_lines = tk.Text(top, padx=5, pady=5)
    global top, filename_initStr, text_more_lines
    top.title("未命名文件")
    # 若"新建",则内容为空
    filename_initStr = None
    text_more_lines.delete(1.0, tk.END)
# 菜单栏——1、文件——②打开
def open_file():
    global filename_initStr
    # 此处filename_initStr接收到的是txt文件的绝对路径
    filename_initStr = filedialog.askopenfilename(defaultextension=".txt")
    if filename_initStr == "":
        filename_initStr = None
    else:
        # 路径不为空,则可以打开
        top.title("" + os.path.basename(filename_initStr))
        text_more_lines.delete(1.0, tk.END)
        file = open(filename_initStr, 'r', encoding="utf-8")
        # 将读到的文件的内容,利用insert方法,插进主页面进行显示
        text_more_lines.insert(1.0, file.read())
        file.close()  # 关闭文件
# 菜单栏——1、文件——③保存
def save():
    try:
        open_File = open(filename_initStr, 'w', encoding="utf-8")
        msg = text_more_lines.get(1.0, 'end')
        open_File.write(msg)
        open_File.close()
    except:
        # 如果open_File保存不成功,说明不存在该文件,首先则应该跳转到另存为
        save_additionally()
# 菜单栏——1、文件——④另存为
def save_additionally():
    try:
        # filedialog主要实现文件对话框
        #    initialfile初始化新文件名字,defaultextension设置文件格式
        NewFile = filedialog.asksaveasfilename(initialfile="未命名", defaultextension=".txt")
        create_new_file = open(NewFile, 'w', encoding="utf-8")
        msg = text_more_lines.get(1.0, tk.END)  # 获取多行文本框的全部内容
        create_new_file.write(msg)  # 写入文件
        create_new_file.close()
        top.title("" + os.path.basename(NewFile))
    except:
        # 利用try-expect解决在点击另存为后,直接关闭对话框的操作引起的程序报错
        pass
# 菜单栏——2、编辑——①复制
def copy():
    text_more_lines.event_generate("<<Copy>>")
# 菜单栏——2、编辑——②粘贴
def paste():
    text_more_lines.event_generate("<<Paste>>")
# 菜单栏——2、编辑——③剪切
def cut():
    text_more_lines.event_generate("<<Cut>>")
# 菜单栏——2、编辑——④全选
def select_all():
    text_more_lines.tag_add("sel", "1.0", "end")  # 选择第一个到最后一个
# 菜单栏——3、关于——①关于
def program_createTime():
    messagebox.showinfo(title="程序创建时间", message="2022-6-21")
# 菜单栏——3、关于—②版权
def Author():
    messagebox.showinfo(title="版权信息", message="作者:\n许梓璘\n2109059342")
# gui界面
if __name__ == '__main__':
    top = tk.Tk()
    top.title("记事本")
    top.geometry("1000x500")
    # 顶层菜单栏
    top_menu_Bar = tk.Menu(top)
    # 定义"文件"菜单
    file_of_menu = tk.Menu(top)
    file_of_menu.add_command(label="新建", accelerator="Ctrl+N", command=new_file)  # 绑定new_file()函数
    file_of_menu.add_command(label="打开", accelerator="Ctrl+O", command=open_file)  # 绑定open_file()函数
    file_of_menu.add_command(label="保存", accelerator="Ctrl+S", command=save)  # 绑定save()函数
    file_of_menu.add_command(label="另存为", accelerator="Ctrl+shift+s", command=save_additionally)  # 绑定new_file()函数
    # 绑定top_menuBar中父菜单"文件"的子菜单file_of_menu
    top_menu_Bar.add_cascade(label="文件", menu=file_of_menu)
    # 定义"编辑"菜单
    edit_of_menu = tk.Menu(top)
    edit_of_menu.add_command(label="复制", accelerator="Ctrl+C", command=copy)
    edit_of_menu.add_command(label="粘贴", accelerator="Ctrl+V", command=paste)
    edit_of_menu.add_command(label="剪切", accelerator="Ctrl+X", command=cut)
    # 添加一条分隔符
    edit_of_menu.add_separator()
    edit_of_menu.add_command(label="全选", accelerator="Ctrl+A", command=select_all)
    # 绑定top_menuBar中父菜单"编辑"的子菜单edit_of_menu
    top_menu_Bar.add_cascade(label="编辑", menu=edit_of_menu)
    # 定义"关于"菜单
    about_of_menu = tk.Menu(top)
    about_of_menu.add_command(label="关于", command=program_createTime)
    about_of_menu.add_command(label="版权", command=Author)
    # 绑定top_menuBar中父菜单"关于"的子菜单about_of_menu
    top_menu_Bar.add_cascade(label="关于", menu=about_of_menu)
    # 最后使用窗口的menu属性指定使用menuBar作为顶层菜单
    top['menu'] = top_menu_Bar
    # 设置多行的文本框
    #   tk.Text(父对象, padx, pady)
    #     padx=5表示Text左/右框与文字最左/最右的间距为5,pady=5表示Text上/下框与文字最上/最下的间距为5
    text_more_lines = tk.Text(top, padx=5, pady=5)
    # expand指定是否填充父组件的额外空间,默认值是False
    #   fill指定填充pack分配的空间,默认值是NONE,表示保持子组件的原始尺寸,这里使用的是"both"(水平和垂直填充)
    text_more_lines.pack(expand=True, fill=tk.BOTH)
    # 滚动条
    scroll = tk.Scrollbar(master=text_more_lines)  # 作用的父组件为定义的text_more_lines多行文本框
    # 决定滚动条滑块位置的方法是set(),
    #   列表框需要跟滚动条相联动,即需要绑定滚动条
    text_more_lines.config(yscrollcommand=scroll.set)  # yscrollcommand调用垂直滚动条的set()方法
    #   滚动条跟列表框相联动
    scroll.config(command=text_more_lines.yview)  # 垂直滚动条参数command调用列表框的yview()方法
    scroll.pack(side=tk.RIGHT, fill=tk.Y)  # 设置滚动条的位置
    # 有关热键绑定(在程序中,绑定了Ctrl + 对应字母的大小写,
    #     即一个热键作了两次绑定)
    # text_more_lines为多行文本框
    # 新建
    text_more_lines.bind("<Control-N>", new_file)
    text_more_lines.bind("<Control-n>", new_file)
    # 打开
    text_more_lines.bind("<Control-O>", open_file)
    text_more_lines.bind("<Control-o>", open_file)
    # 保存
    text_more_lines.bind("<Control-S>", save)
    text_more_lines.bind("<Control-s>", save)
    # 另存为
    text_more_lines.bind("<Control-Shift-s>", save_additionally)
    text_more_lines.bind("<Control-Shift-S>", save_additionally)
    # 复制
    text_more_lines.bind("<Control-c>", copy)
    text_more_lines.bind("<Control-C>", copy)
    # 粘贴
    text_more_lines.bind("<Control-v>", paste)
    text_more_lines.bind("<Control-V>", paste)
    # 剪切
    text_more_lines.bind("<Control-x>", cut)
    text_more_lines.bind("<Control-X>", cut)
    # 全选
    text_more_lines.bind("<Control-A>", select_all)
    text_more_lines.bind("<Control-a>", select_all)
    top.mainloop()
相关文章
|
7天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
23天前
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
3天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
26 10
|
21天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
49 17
|
4月前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
|
2月前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
68 20
|
2月前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
74 0
|
4月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
272 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
4月前
|
存储 IDE 开发工具
编写Python参考手册速查软件(一)
编写Python参考手册速查软件(一)
63 1
|
4月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。

热门文章

最新文章

相关内容推荐

网站图标如何制作镇江网站建设制作方案徐州淘宝网站制作有什么网站可以制作链接沧州游戏网站制作电影网站首页制作图片台州网站制作费用网站的制作宽度购物网站用什么制作的KOII翻译网站制作睡美人电影网站制作平顶山网站制作所需资料大学网站制作报价模板制作网站需要什么细节店招在线制作网站名称制作商店网站图片制作视频的网站制作动态相册网站模板中英文网站制作价格安利网站视频制作一流网站制作选哪家制作网站开发程序学的什么专业动易网站模板制作的改进建议切割海报制作网站彭水网站制作报价网站网页制作特效代码沙发电影网站制作纯音乐网站制作ppt儋州响应式网站制作房山网站制作建设公司好奇网站制作书签德云社网站制作头像宁波网站制作首荐荣盛网络号瑞安网站制作哪家好阿里银川网站制作网站制作面试 问题涟水网站制作普洱网站制作流程恶搞朋友网站制作9866电影网站制作制作了一个网站老是没有回头客绍兴怎么制作本地的视频网站泸州搬家网站制作51电影网站制作dw网站的制作方法无锡网站制作必选新互动网络读者网上书店网站设计与制作阳泉网站制作订做网站优化制作公司平台制作网站费怎么做会计科目南城服装网站制作什么公司好使用cs6制作简单的学院网站红河网站制作设计张掖网站制作推广北仑网站制作有哪些上海网站制作推荐乐云seo抚州制作网站的公司盐城公司网站制作公司车祸网站制作表格表白网站制作模板机械网站制作干花彭州制作企业网站亭湖网站制作公司报价flash音画制作网站张家界网站制作视频的软件苏州电商网站制作服务报价吉林网站建设制作哪家好制作网站表白逍遥法外电影网站制作如何做专业网站设计制作全景图制作网站哪个好上海公司网站制作公司台州网站制作模板歌词网站制作手工企业网站制作询价个人网站简单制作免费制作专属头像网站制作网站需要的技术和软件asp.net制作美食网站网站制作种类有哪些制作网站需要学多久怎么在招聘网站制作附件简历制作网站需要什么条件网站制作菜单栏网站制作的内容什么好重庆南川网站制作公司推荐南昌比较好的网站制作排名三大战役电影网站制作怎样制作网站博客笋岗怎么样进行网站制作校友录网站制作表格栾城网站建设制作费用网站制作宣传广告下面关于网站制作错误的是泰州网站制作多少钱韩国ppt制作网站苏宁易购网站设计怎么制作飞利浦网站制作书签南陵网站制作公司徐州网站制作干花相框手写图片制作网站制作网站分享快乐365 网站制作全家福素材网站制作聊城集团网站制作公司故乡教案网站制作为盲童制作有声读物的网站网站制作公司知名 乐云践新丁博士网站制作FLICKR网站制作小玩具高端的培训行业网站制作脚本网站制作手工财经类视频制作素材网站PSP网站制作贴纸临海如何快速制作网站视频用视频制作动图网站dw制作网站源代码如何制作html网站简历表格制作网站手机电子书制作网站广东求职网站制作网站制作样本网站制作培训找哪家LES小说网站制作中山电气产品网站设计制作桃花源记网站制作表格FBI网站制作贴纸HR网站制作书签制作一个招聘网站费用门窗网站制作ppt张艾嘉电影网站制作网站制作的电子书山寨电影网站制作寒假内容海报制作网站榆树制作网站公司动态网站设计与开发制作大学城网站制作起泡廊坊网站制作官网天津网站建设制作品牌公司奇趣影视网站制作台州网站制作服务价格网站制作的概念情侣网站制作方法高港区外贸网站制作咨询热线苹果3d文字在线制作网站制作营销网站多少钱儿童故事网站制作怎么制作网站电脑初二网站制作单位证照ps制作网站设计大方QQ网站钓鱼制作教程怎么投诉制作网站的靓妆网站制作蛋糕模型制作参考网站如何制作一个信息发布网站永济网站制作服务制作仿小米官方网站品牌推广网站制作新建网站制作网店axure制作健身网站大东网站制作德令哈网站设计制作丰都网站制作多少钱重庆綦江网站制作哪家有名通州大型网站制作求职网站的制作学院网站制作招标网站制作优化推广宿州银川网站制作蛋糕店网站制作怎么制作一个可查询网站dw模板制作网站的缺点制作网站的原理制作网站后台视频网站制作乐云seo十年_在线电子名片制作网站免费肥城网站制作案例龙华网站建设制作培训淘宝商品详情页制作网站阳江制作网站哪里好基于react网站制作网站制作公司亅乐云seo制作网站超链接文字丹东网站制作厂家儋州响应式网站制作西宁网站制作项目黄贝付费网站制作哪个好网站建设制作服务内容资阳多语言网站制作h5制作电影网站网站制作与开发独立建设网站制作清徐织梦网站怎么制作宁波制作网站企业别克网站制作义乌九江制作网站设计费用多少电商主图制作网站校园网站制作壁纸泉州制作网站首页深圳企业网站制作哪个

合作伙伴

深圳网站优化推广公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统