import tkinter
import tkinter as tk
from tkinter import *
import tkinter.filedialog
import tkinter.messagebox
import tkinter.scrolledtext
import tkinter.colorchooser
import tkinter.simpledialog#----------------------------------------一、创建窗口-------------------------------------------------
filename=""  #定义空文件名
win=tk.Tk()
win["height"]=400
win["width"]=600
#-----------------------------------------------------------------------------------------------------#---------------------------------------二、功能定义区---------------------------------------------#-----------------------------------------1.菜单栏 File-----------------------------------------------------------textChanged=tk.IntVar(value=0)  #字符串计数器#1.打开
def Open():global filename#1.获取字符,是否保存原来的文档if textChanged.get():yesno=tk.messagebox.askyesno(title="Save or not",message="Do you want to Save?")  #询问框if yesno==tkinter.YES:   Save()       filename=tkinter.filedialog.askopenfilename(title="Open file",filetypes=[("Text files","*.txt")]) #打开路径框#2.打开新的文档if filename:txtContent.delete(0.0,tk.END)  #删除原来的文本fp=open(filename,"rb")         #读取文本txtContent.insert(tkinter.INSERT,"".join(fp.read().decode('GBK'))) #解码插入到文本编辑器fp.close()     #关闭指针textChanged.set(0)  #字符串置0#2.保存
def Save():global filenameif not filename:SaveAs()elif textChanged.get():fp=open(filename,"w")   #创建文本fp.write(txtContent.get(0.0,tkinter.END))#将文本框的内容导入文件fp.close()   #关闭textChanged.set(0) #计数器置0#3.保存到
def SaveAs():global filename#创建对话框,默认对应的路径和文件名newfilename=tkinter.filedialog.asksaveasfilename(title="Save As",initialdir=r"c:\\",initialfile="new.txt")#写入文件内容if newfilename:fp=open(newfilename,"w") fp.write(txtContent.get(0.0,tkinter.END))fp.close()filename=newfilenametextChanged.set(0)#4.关闭
def Close():global filenameSave()   #保存txtContent.delete(0.0,tkinter.END) #区域置空filename=""  #文件名置空#-------------------------------------------2.菜单栏 Edit-----------------------------------------------------------
#1.回退
def Undo():txtContent["undo"]=True    try:txtContent.edit_undo() except Exception as e:pass#2.前进
def Redo():txtContent["undo"]=Truetry:txtContent.edit_redo()except Exception as e:pass#3.复制
def Copy():txtContent.clipboard_clear()  #清空缓冲区txtContent.clipboard_append(txtContent.selection_get())  #保存到缓冲区pass#4.剪切
def Cut():Copy()  #复制文本txtContent.delete(tkinter.SEL_FIRST,tkinter.SEL_LAST)  #删除文本编译器的选中文本#5.粘贴
def Paste():try:txtContent.insert(tkinter.SEL_FIRST,txtContent.clipboard_get()) #获取缓冲区文本txtContent.delete(tkinter.SEL_FIRST,tkinter.SEL_LAST)     #删除选中文本return except Exception as e:pass#6.查找
def Search():textToSearch=tkinter.simpledialog.askstring(title="Search",prompt="What to search?")  start=txtContent.search(textToSearch,0.0,tkinter.END)             if start:   #查找到时,返回yestkinter.messagebox.showinfo(title="Found",message="ok")#--------------------------------------------3.菜单栏 Help-----------------------------------------------------------
#1,关于
def About():tkinter.messagebox.showinfo(title="About",message="Author:Dong Fuguo")  #弹出信息框pass#-------------------------------------------------------------------------------------------------------------------   #------------------------------------三、菜单栏框架----------------------------------menu1=tk.Menu(win)#菜单1 File
#---------------------------------------------------------------------
submenu=tk.Menu(menu1,tearoff=0)submenu.add_command(label="Open",command=Open)
submenu.add_separator()
submenu.add_command(label="Save",command=Save)
submenu.add_separator()
submenu.add_command(label="SaveAs",command=SaveAs)
submenu.add_separator()
submenu.add_command(label="Close",command=Close)menu1.add_cascade(label="File",menu=submenu)
#-----------------------------------------------------------------------#菜单2  Edit
#-----------------------------------------------------------------------
submenu2=tk.Menu(menu1,tearoff=0)submenu2.add_command(label="Undo",command=Undo)
submenu2.add_separator()
submenu2.add_command(label="Redo",command=Redo)
submenu2.add_separator()
submenu2.add_command(label="Copy",command=Copy)
submenu2.add_separator()
submenu2.add_command(label="Cut",command=Cut)
submenu2.add_separator()
submenu2.add_command(label="Paste",command=Paste)
submenu2.add_separator()
submenu2.add_command(label="Search",command=Search)menu1.add_cascade(label="Edit",menu=submenu2)
#------------------------------------------------------------------------#菜单3 Help
#------------------------------------------------------------------------
submenu3=tk.Menu(menu1,tearoff=0)submenu3.add_command(label="About",command=About)menu1.add_cascade(label="Help",menu=submenu3)
#------------------------------------------------------------------------#----------------------------------------------------------------------------------------------------------#------------------------------------------四、总体结构---------------------------------
#1.菜单栏
win.config(menu=menu1)#2.滑动文本框
def keyPress(event):textChanged.set(1)txtContent=tk.scrolledtext.ScrolledText(win,wrap=tk.WORD)
txtContent.pack(fill=tk.BOTH,expand=tkinter.YES)  #创建txtContent.bind("<Key>",keyPress)#绑定按键识别器win.mainloop()

用python制作文本编辑器相关推荐

  1. python制作文本编辑器_Python小实战:制作文本编辑器

    学了半年了,该施展一下了

  2. python实现文本编辑器_Python实现文本编辑器功能实例详解

    这篇文章主要介绍了Python实现的文本编辑器功能,结合实例形式详细分析了基于wxpython实现文本编辑器所需的功能及相关实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现的文本编辑器功 ...

  3. Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序

    朋友们,大家好,这次再次与作者见面,作者将发表一篇文章,介绍如何使用Python Tkinter创建文本编辑器.Tkinter是一个Python库,在您想要创建应用程序时非常有用. 立即讨论如何制作此 ...

  4. 飞象求职学python_用Python制作markdown编辑器

    还记得在上篇提到的rest-framework,文档中提到了markdown也是可选应用. 那么这篇我们就来尝试使用markdown来制作一个在线的可以预览的editor. 安装 Python Mar ...

  5. python实现文本编辑器_Python-tkinter实现简单的文本编辑器

    Python-tkinter实现简单的文本编辑器 利用tkinter实现简单的文本编辑器.创建一个简单的文本编辑器.可以用读文件的方式在一个文本域里显示一些文字供用户编辑. 当用户退出程序时(通过 Q ...

  6. Windows和Manjaro Linux配置Kate作为Python等文本编辑器

    文章目录 Kate优缺点 kate相关网站 Windows配置效果 Windows下载与配置 下载 配置 运行Python脚本 运行bat文件(类似Python的配置),关键之处: 编译运行C++单文 ...

  7. python的文本编辑器atom_python的各种编辑器-PyScripter、pycharm 、atom、vscode、Sublime Text等等...

    RT,本文主要列举python的各种编辑器-PyScripter.pycharm .atom.vscode.Sublime Text等等. PyScripter 开源 免费 windows only ...

  8. 2023.04.27 QT 制作文本编辑器

    有改变字体.颜色.打开文件以及保存文件功能 一.代码部分: 1. 头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #inc ...

  9. 【tkinter制作文本编辑器(3)】编辑菜单选项栏事件和右键菜单功能实现(撤销、还原、复制、粘贴、剪切、查找及全选)

    编辑菜单选项栏事件功能实现 1. 编辑菜单选项栏事件功能实现步骤 1.1 撤销 1.2 恢复 1.3 剪切 1.4 复制 1.5 粘贴 1.6 全选 1.7 查找 2. 快捷键绑定 3. 右键弹出菜单 ...

最新文章

  1. 对顶层生存空间的考虑---及蜷缩在内层的EJB
  2. Linux|UNIX下LAMP环境的搭建及常见问题[连载4]
  3. sift计算描述子代码详解_SIFT解析(三)生成特征描述子
  4. android python 纠正图片,Python脚本替换Android资源(包名,图片,文件内容)
  5. boost::geometry::detail::overlay::get_turn_info用法的测试程序
  6. 再见了Spring!这个架构有点厉害,甚至干掉了Dubbo!
  7. 安卓数字倒数控件_安卓11来了,感受一下
  8. SpringMVC @Transactional注解方式事务失效的解决办法
  9. 怎么检测不到我的音频_新专利显示未来的AirPods可能会检测手势 并具有旋转式音量控制功能...
  10. PDE34 Transport equation: derivation general solution
  11. springboot uniapp疫情防控打卡系统源码
  12. 物联网通信消息队列客户端-MQTT简介
  13. .length和.length()
  14. 骗你不是人 硬盘传输速度提升4倍的方法
  15. TCP SYN-Flood攻击
  16. Python爬取B站排行榜前100视频信息!
  17. 台灯是白炽灯好,是LED护眼灯好?推荐对眼睛舒适的护眼台灯
  18. 全手动搭建Kubernetes集群——Master管理节点和Node工作节点部署
  19. 机器学习 --- 感知机
  20. mysql字符排序规则utf8mb4_0900_ai_ci修改为utf8_general_ci

热门文章

  1. 解决VS安装无法联网下载问题
  2. DPK8300E+设置 (打印乱码)
  3. 第3章 业务连续性计划
  4. 精讲响应式WebClient第4篇-文件上传与下载
  5. vue中使用vue-qrcode-reader自动检测并解码来自摄像机流的QR码
  6. Js(Css)动态引用方法–Js(css)的统一管理
  7. TextMate 2.0 RC 23 特别版 Mac 著名的文本编辑器软件
  8. 大学生风力发电风向跟踪实验改进
  9. Linux:开机引导和系统启动【详细】
  10. 基于VB算法+Picture+Timer控件制作的39种动画效果,类似屏保(完整原程序)