首页 > 其他分享 >文本编辑器

文本编辑器

时间:2023-01-03 23:56:58浏览次数:42  
标签:submenu 文本编辑 tkinter txtContent label add command

 1、通过设计一个文本编辑器演示了演示了菜单、文本框、文本对话框等组件的用法 实现了打开文件,保存文件,另存文件以及文本复制、剪切、粘贴和查找等功能

 

 

'''
通过设计一个文本编辑器演示了演示了菜单、文本框、文本对话框等组件的用法
实现了打开文件,保存文件,另存文件以及文本复制、剪切、粘贴和查找等功能
'''
#创建应用程序窗口
import tkinter
import tkinter.messagebox
import tkinter.filedialog
import tkinter.scrolledtext
import tkinter.simpledialog
import tkinter.scrolledtext

app = tkinter.Tk()
app.title('罗式文本编辑器')
app['width'] = 800
app['height'] = 600
textChanged = tkinter.IntVar(value=0)
#当前文件名
filename = ''
#创建菜单
menu = tkinter.Menu(app)
#File子菜单
submenu = tkinter.Menu(menu,tearoff=0)
def Open():
    global filename
    #如果内容已改变,先保存
    if textChanged.get():
        yesno = tkinter.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')])
    if filename:
        #清空内容,位置0.0是lineNumber.Colum的表示方法,表示行号和列号
        txtContent.delete(0.0,tkinter.END)
        fp = open(filename,'r')
        txtContent.insert(tkinter.INSERT,''.join(fp.readlines()))
        fp.close()
        #标记为尚未标记
        textChanged.set(0)
#创建Open菜单并绑定菜单事件处理函数
submenu.add_command(label='Open',command=Open)
def Save():
    global filename
    #如果是第一次保存新建文件,则打开‘另存为’窗口
    if not filename:
        SaveAs()
    #如果内容发生了改变,保存,可以使用with关键字改写文件操作代码
    elif textChanged.get():
        fp = open(filename,'w')
        fp.write(txtContent.get(0.0,tkinter.END))
        fp.close()
        textChanged.set(0)
submenu.add_command(label='Save',command=Save)
def SaveAs():
    global filename
    #打开另存为窗口
    #tkiner.asksaveasfilename()打开保存窗口,用户再保存窗口中输入了保存地址,就会传递给newfilename
    newfilename = tkinter.filedialog.asksaveasfilename(title='Save As',initialdir=r'C:\\',initialfile='new.txt')
    #如果指定了文件名,则保存文件夹,可以使用with改写
    if newfilename:
        fp = open(newfilename,'w')
        fp.write(txtContent.get(0.0,tkinter.END))
        fp.close()
        filename = newfilename
        textChanged.set(0)
submenu.add_command(label='Save As',command=SaveAs)
#添加分割线
submenu.add_separator()
def Close():
    global filename
    Save()
    txtContent.delete(0.0,tkinter.END)
    #置空文件名
    filename=''
submenu.add_command(label='Close',command=Close)
#将子菜单关联道主菜单上
menu.add_cascade(label='File',menu=submenu)
#Edit子菜单
submenu = tkinter.Menu(menu,tearoff=0)
#撤销最后一次操作
def Undo():
    #启用undo标志
    txtContent['undo'] = True
    try:
        txtContent.edit_undo()
    except Exception as e:
        pass
submenu.add_command(label='Undo',command=Undo)
def Redo():
    txtContent['undo'] = True
    try:
        txtContent.edit_redo()
    except Exception as e:
        pass
submenu.add_command(label='Redo',command=Redo)
submenu.add_separator()

def Copy():
    txtContent.clipboard_clear()
    txtContent.clipboard_append(txtContent.selection_get())
submenu.add_command(label='Copy',command=Copy)
def Cut():
    Copy()
    #删除所选内容
    txtContent.delete(tkinter.SEL_FIRST,tkinter.SEL_LAST)
submenu.add_command(label='Cut',command=Cut)
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
    txtContent.insert(tkinter.INSERT,txtContent.clipboard_get())
submenu.add_command(label='Paste',command=Paste)
submenu.add_separator()

def Search():
    #获取要查找的内容
    textToSearch = tkinter.simpledialog.askstring(title='Search',prompt='What to search?')
    start = txtContent.search(textToSearch,0.0,tkinter.END)
    if start:
        tkinter.messagebox.showinfo(title='Found',message='Ok')
submenu.add_command(label='Search',command=Search)
menu.add_cascade(label='Edit',menu=submenu)
#Help子菜单
submenu = tkinter.Menu(menu,tearoff=0)
def About():
    tkinter.messagebox.showinfo(title='About',message='Author:luo')
submenu.add_command(label='About',command=About)
menu.add_cascade(label='Help',menu=submenu)
#将创建的文件夹关联道应用程序窗口
app.config(menu=menu)
#创建文件编辑组件,并自动适应窗口大小
txtContent = tkinter.scrolledtext.ScrolledText(app,wrap=tkinter.WORD)
txtContent.pack(fill=tkinter.BOTH,expand=tkinter.YES)
#按压方法
def KeyPress(event):
    textChanged.set(1)
#这里做了一个事件,只要点击了编辑框,就会调用KeyPress方法
#这个方法,将textChaged.set的值,设置为1
txtContent.bind('<KeyPress>',KeyPress)
app.mainloop()

 

标签:submenu,文本编辑,tkinter,txtContent,label,add,command
From: https://www.cnblogs.com/buchijiuminvhai/p/17023727.html

相关文章

  • QuillEditor富文本编辑器光标自动跳至页首问题
    <QuillEditorCom>:content=content@onEditorChange='onEditorChange'ref='myQuillEditor'</QuillEditorCom>onEditorChange(val){//使编......
  • Vue3 富文本编辑器
    官网https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8-1 安装:npminstall@wangeditor/editor--savenpminstall@wangeditor/editor-for-vue@n......
  • 文本编辑工具VI/VIM
    目录1.vi/vim介绍2.vi/vim使用详解2.1vi/vim的特点2.2vi/vim三种编辑模式2.3文本编辑方式d跳转符:删除跳转符指定范围内的#个,例如dwdedbdd:删除包括当前光标所在行在内......
  • 14款web前端常用的富文本编辑器插件
    富文本编辑器是一种可内嵌于浏览器,所见即所得的文本编辑器。它提供类似于OfficeWord的编辑功能,方便那些不太懂html用户使用,富文本编辑器的应用非常广泛,它的历史与图文网页......
  • KindEditor(富文本编辑器)的简单使用
    1.首先,去kindeditor官网下载我们所需要的资源  下载地址:资源下载路径2.然后解压资源包,把资源文件夹添加到自己的项目中去。 前台代码展示:<scriptcharset="utf-8"s......
  • 文本编辑器常用快捷键
    @目录前言一、使用步骤1.复制:ctrl+c2.粘贴:ctrl+v3.剪切:ctrl+x4.保存:ctrl+s5.撤回:ctrl+z6.重写:ctrl+y(取消撤回)7.全选:ctrl+a8.键盘上的home键:光标回到行首9.键盘上......
  • 二、Qt定时器与文本编辑器制作《QT 入门到实战》
    学习目标了解qt的pixmap了解qt的label如何显示图片了解定时器的开启了解定时器的关闭了解文件如何进行读取了解QFileDialog的使用了解了一个文本编辑器的......
  • tp5插入百度富文本编辑器UEditor
    ​​http://ueditor.baidu.com/website/download.html​​下载压缩包  将下载的压缩包解压到tp框架的public下的static下      在静态页面中引入​​<!--配置文件......
  • vue-quill-editor富文本编辑器使用方法,最全,含部分源码解读,含图片上传,如果页面有多个富
    vue-quill-editor富文本编辑器使用方法,最全,含部分源码解读,含图片上传,如果页面有多个富文本,图片上传解决方案 一、效果二、安装2.1脚手架安装命令npminstallvue-quill-edi......
  • quillEditor富文本编辑器
    quillEditor是我21年就使用过的一款富文本编辑器个人感觉还可以程序跑的通一切顺利哈想要有预览效果的可以查看我写的vue+mavon-editor编辑器的文章一、npm下载依......