zoukankan      html  css  js  c++  java
  • python小项目之文本编辑器

    高考完后这么久才想起这系列教程,实在抱歉,现在该来继续教程了。
    本节利用前面所学知识,来完成一个小工具——文本编辑器!

    tkinter

    在实现文本编辑器之前,先来了解下tkinter这个python库。

    tkinter库用来实现GUI程序(Graphical User Interface 图形用户界面),我们实现的文本编辑器是有图形的,类似windows系统下的记事本。

    当然啦,写GUI程序不只有tkinter库,还有更为强大的pyqt、wxpython等,不过对于本节实现编辑器来说,简单的tkinter库就已经足够了,而且windows安装的python一般自带了这个库,不必另外安装。

    实现文本编辑器

    第一步——界面

    首先,我们先把编辑器的图形界面写好。

    什么?还没说tkinter库怎么用就开工了?@_@

    别慌!很简单,看下面代码,相信注释很清楚了:

    import tkinter
    # 导入tkinter库
    
    
    win = tkinter.Tk()  # 创建窗口
    win.title('文本编辑器')  # 设置标题
    
    entry_file = tkinter.Entry(win)  # 创建一个文本输入框,用来设置文件路径
    entry_file.pack()  # 放置该输入框
    
    def do_open():
        # 打开文件
        pass
    def do_save():
        # 保存文件
        pass
    
    btn_open = tkinter.Button(win, text='打开', command=do_open)  # 创建按钮用于打开文件
    btn_save = tkinter.Button(win, text='保存', command=do_save)  # 创建按钮用于保存文件
    
    # 放置按钮
    btn_open.pack()
    btn_save.pack()
    
    
    # 创建多行文本框,用于编辑文件
    text = tkinter.Text(win)
    text.pack() 
    
    win.mainloop()  # 进入消息循环
    

    使用tkinter创建GUI程序,一般有以下框架:

    win = tkinter.Tk()  # 创建窗口
    
    # 界面的布局,如添加按钮、文本框等等
    
    win.mainloop()  # 进入消息循环
    

    现在不必理解这个框架,我们就照着写就好了。

    现在对其中的一些地方做下解释,一般创建控件(按钮,文本框等称为控件)的第一个参数为所在的容器,我们的程序里的控件都在主窗口里,也就是win对象。

    我们首先创建了一个文本输入框,用来设置要操作文件的路径。

    创建按钮可以使用关键字参数text来设置按钮的标签(显示的文字),用关键字参数command来设置点击按钮所做的事,我们分别创建了两个按钮,一个用来打开文件,一个用来保存文件。

    最后创建了一个多行文本框,用于文件的编辑。

    运行程序,窗口大致如下:
    文本编辑器界面

    大家的界面的样式可能有点不一样,这个因操作系统环境而异
    (本人比较懒,因为本节重点不是图形界面,所以没有去规划界面的布局,仅仅把控件直接随意放置,如有兴趣,可以自己搜索tkinter的具体用法,画一个比这个好看得多的界面^_^

    第二步——打开文件

    现在我们来实现打开文件这个功能,还记得前面有一句这样的代码吗?

    btn_open = tkinter.Button(win, text='打开', command=do_open)  # 创建按钮用于打开文件
    

    我们给创建按钮的tkinter.Button函数(实际上这不是函数),传递了一个参数command=do_open,该参数用于设置当按钮被点击时自动调用的函数,所以我们的重点就是实现这个当点击时自动调用的do_open函数。

    打开文件的流程是怎么样的呢?

    1. 首先,我们要知道文件的路径,先从文本输入框输入文件的路径
    2. 点击打开按钮
    3. 点击打开按钮幕后将文件打开,读取文件内容,把文件内容显示d奥多行文本框中

    其实我们的do_open函数就是上面的第三步,打开文件=>读取数据=>显示数据

    具体代码如下:

    def do_open():
        # 打开文件
        file_path = entry_file.get()  # 获取文本框的内容
        with open(file_path) as fr:
            # 打开文件
            content = fr.read()  #一次性读取文件内容,对大文件不宜使用
            text.delete(0.0, tkinter.END)  # 清空文本框内容
            text.insert(tkinter.END, content)  # 在光标后插入内容
    

    首先我们通过file_path = entry_file.get()获取到了文本输入框的内容作为文件的路径,用with代码块打开文件,读取文件数据后,将数据插入到多行文本框显示。

    在插入数据之前,先使用text.delete(0.0, tkinter.END)清空文本框,这里就不多解释了。具体用法可以自己查查。

    示例如下(这里我打开了python源码文件本身):
    打开文件

    第三步——保存文件

    保存文件的功能实现类似打开文件,点击保存按钮后:获取多行文本框内容=>打开文件=>写入文件

    话不多说,上代码!

    def do_save():
        # 保存文件
        content = text.get(0.0, tkinter.END)  # 获取文本框内容
        file_path = entry_file.get()  # 文件路径
        with open(file_path, 'w') as fw:
            fw.write(content)  # 写入数据到文件中
    

    gif动图演示:
    保存文件

    首先我在多行文本框中输入了abcdefghijk,在文本输入框输入文件路径1.txt,然后点击保存。

    之后把多行文本框的内容都删掉,再打开1.txt文件,可以看到刚刚输入的abcdefghijk内容,浏览目录也可以发现,当前目录下确实多了一个1.txt文件,可以用记事本查看,文件确实保存成功!

    完整代码

    现贴出完整的代码:

    import tkinter
    # 导入tkinter库
    
    
    win = tkinter.Tk()  # 创建窗口
    win.title('文本编辑器')  # 设置标题
    
    entry_file = tkinter.Entry(win)  # 创建一个文本输入框
    entry_file.pack()  # 放置该输入框
    
    def do_open():
        # 打开文件
        file_path = entry_file.get()  # 获取文本框的内容
        with open(file_path) as fr:
            # 打开文件
            content = fr.read()  #一次性读取文件内容,对大文件不宜使用
            text.delete(0.0, tkinter.END)  # 清空文本框内容
            text.insert(tkinter.END, content)  # 在光标后插入内容
    
    def do_save():
        # 保存文件
        content = text.get(0.0, tkinter.END)  # 获取文本框内容
        file_path = entry_file.get()  # 文件路径
        with open(file_path, 'w') as fw:
            fw.write(content)
    
    
    
    btn_open = tkinter.Button(win, text='打开', command=do_open)  # 创建按钮用于打开文件
    btn_save = tkinter.Button(win, text='保存', command=do_save)  # 创建按钮用于保存文件
    
    # 放置按钮
    btn_open.pack()
    btn_save.pack()
    
    
    # 创建多行文本框,用于编辑文件
    text = tkinter.Text(win)
    text.pack() 
    
    win.mainloop()  # 进入消息循环
    

    总结

    这个小工具很简单(也很丑 ( ̄_, ̄ )),但也将文件读写的知识应用到了实际。

    如果大家对tkinter有兴趣的话,可以自己搜索学习,相信大家能做出有趣的程序来。

  • 相关阅读:
    S2-052 RCE漏洞 初步分析
    Struts S2-048 RCE漏洞分析
    CSP-S2019游记
    委托学习笔记1:委托的基本使用
    jQuery无刷新上传学习心得
    Nuget-自定义模板的创建与使用
    DotNetCore笔记-nginx代理访问swagger
    SQLServer中Partition By 函数的使用
    IE11 Windows7下F12 DOC资源管理器不能用Exception in window.onload: Error: An error has ocurredJSPlugin.3005
    Angular-ui-router入门
  • 原文地址:https://www.cnblogs.com/featherl/p/11075038.html
Copyright © 2011-2022 走看看